質問はこの投稿の最後にあります。
最初のスニペット:空のローカル変数ディクショナリ。
def outer():
x = 1
def inner():
print "Local variables: %s" % locals()
return inner()
print outer()
出力: ローカル変数: {}
2 番目のスニペット: inner() 関数内に出力し、ローカル変数エントリを作成します。
def outer():
x = 1
def inner():
print x
print "Local variables: %s" % locals()
return inner()
print outer()
出力:
1
Local variables: {'x': 1}
3 番目のスニペット: 内部関数内からの del x:
def outer():
x = 1
def inner():
print x
print "Local variables: %s" % locals()
del x
return inner()
print outer()
出力:
>>> outer()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in outer
File "<stdin>", line 4, in inner
UnboundLocalError: local variable 'x' referenced before assignment
>>>
質問:
- 2 番目のスニペットでは、print ステートメントでローカル変数を作成する方法を示しています。
- 内部関数内にローカル変数を作成すると、なぜそれを削除できないのですか。
誰かがこれを理解するのを手伝ってくれませんか。