このコードがあります:
>>> if True:
... a = 4
...
>>> print a
4
ifブロックの後で変数aがまだ生きているのはなぜですか? ブロック終了時に破壊すべきではないか?
このコードがあります:
>>> if True:
... a = 4
...
>>> print a
4
ifブロックの後で変数aがまだ生きているのはなぜですか? ブロック終了時に破壊すべきではないか?
functionPython変数には、、、classまたはの内部にスコープがありますmodule。ifステートメント、whileステートメント、およびステートメントで初期化された変数forは、if / while/forステートメントの外部で使用できます。
これは、変数にアクセスするとスコープ外であるために例外がスローされる他の多くの言語とは異なります。
たとえば、if / while / forステートメントがfalseで実行aされない場合、初期化されず、次のようなエラーがスローされます。
>>> if False:
... a = 5
...
>>> print a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined