if块之后变量的生命周期

时间:2012-09-08 10:43:11

标签: python

有这段代码:

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

为什么变量 a if 阻止之后仍然存在?阻止如果结束时不应该被销毁吗?

1 个答案:

答案 0 :(得分:10)

Python变量的范围在functionclassmodule中。在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