函数不改变全局variables
我的代码如下:
done = False def function(): for loop: code if not comply: done = True #let's say that the code enters this if-statement while done == False: function()
出于某种原因,当我的代码进入if语句时,它在function()完成后不会退出while循环。
但是,如果我这样编码:
done = False while done == False: for loop: code if not comply: done = True #let's say that the code enters this if-statement
它退出while循环。 这里发生了什么?
我确信我的代码进入if语句。 我还没有运行debugging器,因为我的代码有很多循环(相当大的二维数组),我放弃了debugging,因为它非常繁琐。 如何“完成”在function中不被改变?
你的问题是,函数创build自己的名称空间,这意味着在函数内done
是一个不同于第二个例子。 使用global done
来使用第一次done
而不是创build一个新的。
def function(): global done for loop: code if not comply: done = True
在这里可以find如何使用global
的解释
done=False def function(): global done for loop: code if not comply: done = True
你需要使用global关键字来让解释器知道你引用了全局variables,否则它将创build一个只能在函数中读取的不同的variables。
使用global
variables,只有这样你才可以修改一个全局variables,否则在函数内部像done = True
这样的语句会声明一个名为done
的新局部variables:
done = False def function(): global done for loop: code if not comply: done = True
阅读更多关于全球声明 。