請參見下面的代碼:可變全局變量不會隱藏在python函數中,對吧?
def good():
foo[0] = 9 # why this foo isn't local variable who hides the global one
def bad():
foo = [9, 2, 3] # foo is local, who hides the global one
for func in [good, bad]:
foo = [1,2,3]
print('Before "{}": {}'.format(func.__name__, foo))
func()
print('After "{}": {}'.format(func.__name__, foo))
結果如下:
# python3 foo.py
Before "good": [1, 2, 3]
After "good": [9, 2, 3]
Before "bad" : [1, 2, 3]
After "bad" : [1, 2, 3]
我想你是對的。沒有設置,沒有新的名字。 – aXqd 2010-05-07 03:20:45
我想是這樣,但爲什麼不同的設置和使用之間的邏輯?如果一切順利,你還必須申報全球foo,是不是更加一致,並防止用戶拍攝自己的腳? – liang 2013-09-19 11:50:05