在此代码中,为什么a
和b
不会在各自块的末尾被销毁?
flag = True
if flag:
a = 1
for i in range(2):
b = 2
print(a, b)
相反,此代码会打印1 2
。为什么Python允许这个?我什么时候可以依赖这种行为?
答案 0 :(得分:5)
阅读Python的范围规则。简而言之,范围从一个新模块开始:功能,方法,类等。仅仅控制流程语句(例如如果和 )不会启动新范围。变量的范围是从它的第一个定义到该范围的结尾。
由于此示例只有一个范围,因此每个变量从第一次分配到文件末尾都是好的。
这足以解决问题吗?