在Python中缺少必需的位置参数

时间:2017-04-10 23:01:11

标签: python function return-value

下面是我在我的代码中尝试做的一个例子......

def func():
x = int (input ('enter x: '))
return x

def func2():
y = int (input( 'enter y: '))
return y

def func3(x,y):
print(randomint(x,y))

def main():
func()
func2()
func3()

main()

我想知道的是,为什么我不能使用我通过输入定义的x和y变量并在函数结束时返回?当这个程序试图运行时,它表示函数缺少必需的参数。傻我知道,我是蟒蛇新手。

此外,我如何在我正在创建的一个函数中使用变量,这是在另一个单独的函数中定义的?谢谢!

3 个答案:

答案 0 :(得分:0)

您的变量只存在于函数中,func3无法获取x和y,但您已将x和y定义为参数。到目前为止,你只是没有传递它们。以下应该做。

def func():
    x = int (input ('enter x: '))
    return x

def func2():
    y = int (input( 'enter y: '))
    return y

def func3(x,y):
    print(randomint(x,y))

def main():
    x_val = func()
    y_val = func2()
    func3(x_val, y_val)

main()

答案 1 :(得分:0)

你说你知道如何缩进所以我不打算讨论这个问题,手头的问题是你需要在funcfunc2之后收到返回值他们被抓住了。

你可以这样做:

def func():
    x = int (input ('enter x: '))
    return x

def func2():
    y = int (input( 'enter y: '))
    return y

def func3(x,y): # there's two positional value so you will need to pass two values to it when calling
    print(randomint(x,y))

def main():
    x = func() # catch the x
    y = func2() # catch the y
    func3(x,y) # pass along x and y which acts as the two positional values
    # if you're lazy, you can directly do:
    # func3(func(), func2()) which passes the return values directly to func3

main()

另一种方法是使用全局声明,但这不是您案例的最佳方式。

只是提示:如果您使用的是随机模块,则随机整数将被调用:random.randint(x,y)

答案 2 :(得分:0)

或者就是这样,如果您不想使用变量。

请记住,相同的名称并不意味着它是相同的变量。作用域可以不同(方法,函数或其他地方),并且名称使变量在相同作用域内唯一(“相同”) 。在所有高级编程语言中这都是相似的,但是范围可以以不同的方式相交。因此,上面的重用示例可以在JavaScript中运行。

这可能与您尝试达到的目标最接近:

let img = e.target.result

请注意,那些轻微的重命名除了理解代码外没有其他作用,但是告诉他们实际操作的方法的好名字非常重要。您会多次阅读代码。您只写一次。