Python:不重新分配变量

时间:2012-05-23 04:46:54

标签: python function variables

当调用 tst 时,为什么下面的变量(A,B,C,D)没有改变。

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)

2 个答案:

答案 0 :(得分:6)

因为Python的范围规则。

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

如果要分配全局A,B和C值,请使用global关键字。

答案 1 :(得分:1)

tst方法中的变量是 local ,也就是说,它们引用的是仅存在于该方法范围内的不同值。使用global内的关键字global A,B,C,D(如tst中所述)来修复行为。请参阅示例here和问题here