在if或for语句中定义的变量

时间:2014-08-18 18:19:52

标签: python variables if-statement for-loop garbage-collection

如果在if语句或for循环中第一次(已定义)分配的变量会发生什么变化,如果从代码运行的时间过去很长时间。是否存在某种垃圾收集,可能导致未定义的变量异常。例如:

if True:
   a=1
else:
   a=3
# long time passed and other codes run
# .
# .
# .
print (a)

我在代码中遇到错误,我怀疑这是原因。它是否在官方Python文档中的某处记录了?

1 个答案:

答案 0 :(得分:1)

在Python中,如果在if语句中定义变量,则在if语句结束后它将继续存在。范围是为classdef或全局范围定义的;例如,如果你在函数中并且在if中定义了一个变量,那么该函数将一直存在,直到函数执行完毕。

然而,

小心,在这样的代码中定义变量:

if x == True:
  a = 1
else:
  print "Not true"

如果你有这样的代码,且x最终为False,那么 a将无法定义。稍后调用{{1}结果会抛出异常。因此,请确保您摆脱任何潜在的问题。