有这段代码:
>>> if True:
... a = 4
...
>>> print a
4
为什么变量 a 在 if 阻止之后仍然存在?阻止如果结束时不应该被销毁吗?
答案 0 :(得分:10)
Python变量的范围在function
,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