函数不改变全局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。

使用globalvariables,只有这样你才可以修改一个全局variables,否则在函数内部像done = True这样的语句会声明一个名为done的新局部variables:

 done = False def function(): global done for loop: code if not comply: done = True 

阅读更多关于全球声明 。