0
Pythonの閉鎖機能があります:delがパラメータに対してUnboundLocalErrorを生成するのはなぜですか?
def test(a):
def delete():
print "first", a
delete()
print "second", a
test(1)
、出力は次のとおりです。
first 1
second 1
その後、我々は別の関数試してみてください。
def test(a):
def delete():
print "first", a
del a
delete()
print "second", a
test(1)
を我々は出力を得る:
をUnboundLocalError
Traceback (most recent call last)
<ipython-input-28-c61f724ccdbf> in <module>()
6 print "second", a
7
----> 8 test(1)
<ipython-input-28-c61f724ccdbf> in test(a)
3 print "first", a
4 del a
----> 5 delete()
6 print "second", a
7
<ipython-input-28-c61f724ccdbf> in delete()
1 def test(a):
2 def delete():
----> 3 print "first", a
4 del a
5 delete()
UnboundLocalError: local variable 'a' referenced before assignment
は、の前にローカル変数になるのはなぜですか?
エラーが名前a
がtest()
の範囲にはなくdelete()
の範囲にローカルなラインで
print "first", a
なく
del a
「del a」は、この点では「a = ...」と同じ効果があると思います。 –
変数の変更は、変数がスコープ内にあることを意味します。外側のスコープ「a」にアクセスするには、 'global'キーワードを使用できます。 – tzaman
@tzaman、エラーはライン印刷で「最初」ですが、aではなくdel aであることに注意してください。それは私の質問です。 – Tyler