我知道LEGB規則。但是,一個函數是否具有對封閉函數中定義的變量的讀取訪問權限的簡單測試看起來並不實際。即:爲什麼我的函數不能在封閉函數中訪問變量?
#!/usr/bin/env python2.4
'''Simple test of Python scoping rules'''
def myfunction():
print 'Hope this works: '+myvariable
def enclosing():
myvariable = 'ooh this worked'
myfunction()
if __name__ == '__main__':
enclosing()
返回:
NameError: global name 'myvariable' is not defined
難道我做錯了什麼?除了LEGB決議命令還有更多嗎?
只是命名函數「enclosing」不會使它如此:) – 2010-06-01 09:27:10
是的。我錯誤地認爲'包含'包含的調用函數,但它實際上是指嵌套函數的父項。 – mikemaccana 2010-06-01 09:44:45
沒有必要恢復有效的標籤。這不是關於你,而是關於這個問題。 – SilentGhost 2010-06-01 09:46:00