2012-05-23 76 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