2

このコードがあります:

>>> if True:
...     a = 4
... 
>>> print a
4

ifブロックの後で変数aがまだ生きているのはなぜですか? ブロック終了時に破壊すべきではないか?

4

1 に答える 1

10

functionPython変数には、、、classまたはの内部にスコープがありますmoduleifステートメント、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
于 2012-09-08T10:46:49.063 に答える