分配新值

时间:2012-12-16 22:38:46

标签: python function

我有一个简单的程序,但我不太明白为什么输出仍为0。

x=0
def main():     
    getX(1,2,x)
    print(x)

def getX(v1,v2,x):
    if (v1>v2):
        v1=x
    else:
        v2=x
main()

1 个答案:

答案 0 :(得分:2)

这里的主要问题是getX绝对没有任何作用。您所做的就是为v1v2分配一个值,这两个值都是本地值,一旦函数结束就会被丢弃。

你可能想要的是:

def getX(v1, v2):
    if v1 > v2:
        return v1
    else:
        return v2

x = getX(1, 2)
print(x)

return给出一个值作为函数的结果,然后您可以在其他地方使用它。您最初不需要设置x或将其传递给函数,因为函数根本不使用它。

还要注意,可以通过更改函数内部的分配并使用global x访问最初定义的模块级x来解决此问题。这是不好的做法,因为通常很难遵循修改全局变量的代码。