2012-05-23 56 views
1

为什么在调用tst时以下变量(A,B,C,D)不会被更改。Python:变量不会被重新分配

A,B,C = 0,0,0 
D = 0 

def tst(): 
    A,B,C = 1,2,3 
    D = 4 
    print(A,B,C,D) 

tst() # tst is called 
print(A,B,C,D) 

Output: 

(1, 2, 3, 4) 
(0, 0, 0, 0) 

回答

6

因为Python范围规则。

在def tst()中,您正在创建局部变量A,B和C,并为它们分配新值。

如果您希望分配给全局A,B和C值,请使用全局关键字。

1

tst该方法内的变量是本地,也就是说,它们指的是仅内部的方法的范围存在不同的值。使用tst内部的关键字global(如global A,B,C,D)来修复此行为。查看示例here和问题here