Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python if或for语句中定义的变量_Python_Variables_If Statement_For Loop_Garbage Collection - Fatal编程技术网

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

Python if或for语句中定义的变量,python,variables,if-statement,for-loop,garbage-collection,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官方文档的某个地方?在Python中,如果在if语句中定义了一个变量,它将在if语句结束后继续存在。

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

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

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

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

但是,在这样的代码中定义变量时要小心:

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

如果您有这样的代码,并且
x
最终为
False
,那么
a
将不会被定义。
以后调用
a
将引发异常。因此,请确保排除任何此类潜在问题。

除非变量超出范围,否则不应对其进行垃圾收集。这就是ref计数的工作原理(Python垃圾收集的方式)。变量保持不变,只要作用域存在,除非它们被
dela
删除。你为什么怀疑这是原因?您发布的代码无法复制您怀疑的错误。您可以尝试在if-else语句之后打印(a)作为调试方法吗?可能是重复的