python全局变量麻烦

时间:2011-01-13 05:47:53

标签: python global-variables

我在python中使用全局变量时遇到了麻烦...

在我的程序中,我声明了2个全局变量, 全局SYNC_DATA和 全局SYNC_TOTAL_SIZE

现在在我的一个函数中,我能够使用全局变量SYNC_DATA而不在函数中再次将其声明为全局变量;但是,我无法以相同的方式使用其他全局变量SYNC_TOTAL_SIZE。我必须再次将后者声明为函数中的全局函数才能使用它。我得到这个错误,如果我使用它而不在函数中声明为全局 - “UnboundLocalError:在赋值之前引用的局部变量'SYNC_TOTAL_SIZE'”

为什么有时我可以访问全局变量而不将它们声明为函数中的全局变量而有时不是? 为什么我们必须再次在函数中声明它是全局函数,因为它在开始时已经被声明过一次...为什么函数只检查全局命名空间中的变量,如果它没有在其中找到它命名空间直接?

2 个答案:

答案 0 :(得分:6)

假设SYNC_TOTAL_SIZE未声明为局部变量。它取决于您对全局变量执行的操作,因为只读取全局变量,不需要将其声明为全局变量,但如果要修改全局变量的值,则必须使用global声明它。

答案 1 :(得分:0)

因为SYNC_TOTAL_SIZE可能在该代码中的其他地方被用作非全局的,这使得Python找到它并认为它不是全局的。另一个原因可能是您只是在某个函数中读取它,因此它不需要global声明(有关详细信息,请参阅this question)。要获得准确的诊断,请发布一个演示您问题的最小代码段。

建议是在你的意思时总是说global