0
我不知道爲什麼我看到的UnboundLocalError
:如果可以從局部範圍讀取globlal variabales,那麼爲什麼不能打印全局變量?
def spam():
print(eggs)
eggs = 'spam local'
eggs = 'global'
spam()
任何人都可以解釋,爲什麼?
我不知道爲什麼我看到的UnboundLocalError
:如果可以從局部範圍讀取globlal variabales,那麼爲什麼不能打印全局變量?
def spam():
print(eggs)
eggs = 'spam local'
eggs = 'global'
spam()
任何人都可以解釋,爲什麼?
事實上,您將eggs
重新綁定到本地範圍eggs = 'spam local'
是觸發此事件的原因。
的Python認爲eggs
會在局部範圍內由於該轉讓,當它調用print
期間看起來eggs
漲它就會抱怨說,它正試圖執行後(前行分配引用變量(eggs
)印刷品)。
一般來說,我還沒有看到任何需要你想要做的事情,無論哪種方式,你都可以通過使用global
來向Python表明你將要改變一個名字全球範圍內:
def spam():
global eggs
print(eggs)
eggs = 'spam local'
,或者傳遞值作爲參數,這不會改變全局值,但使其可在本地補救參考失敗的第一個打印通話過程中發現:
def spam(eggs=eggs):
print(eggs)
eggs = 'spam local'
這兩種方法有不同的s emantics當然:
eggs
在本地範圍內可用,並將其用作參數,其全局值爲eggs
作爲其默認值。 eggs
在print
中的查找現在可用,而eggs = 'spam local'
將改變位於本地範圍中的eggs
。您可以根據您嘗試嘗試的內容來選擇。