2012-12-16 41 views
-2

我有一个简单的程序,但我不明白为什么输出仍为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() 
+2

你为什么认为'x'会改变价值?在别的之前,你没有在任何地方分配'x'。 –

+0

我以为def getX会重新分配X. – user1718826

+0

您需要执行'x = ...',其中'...'是某个值或变量分配给'x'。 –

回答

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来解决。这是不好的做法,因为跟踪修改全局变量的代码通常比较困难。

+0

谢谢,原来的程序来自我的老师,她只是想问为什么我们不能改变x。 – user1718826

+2

@ user1718826只要注意,如果你在你的问题中包括了你想知道它的原因 - 那么答案可能会采取一种解释为什么是这种情况的路线,以及为什么最好不要改变'x'那。 –