如果在if
语句或for
循环中第一次(已定义)分配的变量会发生什么变化,如果从代码运行的时间过去很长时间。是否存在某种垃圾收集,可能导致未定义的变量异常。例如:
if True:
a=1
else:
a=3
# long time passed and other codes run
# .
# .
# .
print (a)
我在代码中遇到错误,我怀疑这是原因。它是否在官方Python文档中的某处记录了?
答案 0 :(得分:1)
在Python中,如果在if
语句中定义变量,则在if
语句结束后它将继续存在。范围是为class
,def
或全局范围定义的;例如,如果你在函数中并且在if
中定义了一个变量,那么该函数将一直存在,直到函数执行完毕。
小心,在这样的代码中定义变量:
if x == True:
a = 1
else:
print "Not true"
如果你有这样的代码,且x
最终为False
,那么 a
将无法定义。稍后调用{{1}结果会抛出异常。因此,请确保您摆脱任何潜在的问题。