我是新來的編程和脫脂閱讀一些功能和類的主題。 因此,在閱讀了關於函數和封閉函數之後,我試圖通過僅僅調用函數及其範圍來模仿類中的繼承搜索。圍繞功能範圍搜索?
例子:
對於代碼
def f1():
t=1
def f2(x):
return eval(x)
return f2
爲什麼我得到一個名稱錯誤定義說
def f1():
t=1
def f2():
return t
return f2
時做
f1()('t') #expecting 1 return
但不是當
f()() # 1 is returned here
我可以通過在f2範圍內將t定義爲非本地來解決這個問題,這意味着第一個代碼僅在f2的本地範圍中查找。爲什麼會發生? `
請縮進您的代碼 – ForceBru
[相關](https://stackoverflow.com/questions/44425363/is-it-true-in-python-closure-will-be-stored-if-and-only-if -it-is-mentioned-lex) –
看看https://stackoverflow.com/questions/4020419/why-arent-python-nested-functions-called-closures的接受答案 - 非常好的解釋。 – mkiever