私はプログラミングに慣れておらず、スキムは機能やクラスに関するいくつかのトピックを読んでいます。 関数と関数を囲んでいることを読んだあと、関数とそのスコープを集めるだけで、クラスの継承検索を模倣しようとしました。囲み関数スコープ検索?
例:コード
def f1():
t=1
def f2(x):
return eval(x)
return f2
については
f1()('t') #expecting 1 return
でもないと言う
def f1():
t=1
def f2():
return t
return f2
を定義行っているとき、私は名前のエラーが出るのはなぜ
f()() # 1 is returned here
この問題は、tをf2のスコープ内で非ローカルとして定義することで解決できます。これは、最初のコードがf2のローカルスコープでしかないことを意味します。なぜこれが起こるのですか? `
コードをインデントしてください。 – ForceBru
[関連](https://stackoverflow.com/questions/44425363/is-it-true-in-python-closure-will-be-stored-if-and-only-if -it-is-mention-lex) –
https://stackoverflow.com/questions/4020419/whyarent-python-nested-functions-called-closuresの受け入れられた答えを見てください - 非常に良い説明があります。 – mkiever