このコードがあります:
>>> if True:
... a = 4
...
>>> print a
4
ifブロックの後で変数aがまだ生きているのはなぜですか? ブロック終了時に破壊すべきではないか?
このコードがあります:
>>> if True:
... a = 4
...
>>> print a
4
ifブロックの後で変数aがまだ生きているのはなぜですか? ブロック終了時に破壊すべきではないか?
function
Python変数には、、、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