爲什麼以下Python工作,沒有首先在全局範圍內聲明a?爲什麼Python允許您將函數內部的局部變量實例化爲全局變量?
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
在我看來,這是正確的方式做到這一點:
a = None
def setA():
global a
a = 5
def printA():
print a
setA()
printA()
有什麼選擇?如果全局範圍中不存在'a'並且讓它在本地而不是'global',那麼'global'就會失敗?它應該引發異常嗎? –
我的印象是全球關鍵詞的意思是「以下是指全球範圍內的變量」。 我會認爲,當你做「打印」應該有一個錯誤,該變量是未知的。 – Stewart
@Stewart:這並不意味着,這意味着「現在認爲以下名稱的任何用途都在全球範圍內運行」。這個名字是否已經存在並不重要。如果分配給它並且它不在那裏,它將創建它,就像它實際上在模塊頂層分配它一樣。 – BrenBarn