Python全局变量问题
我在使用Python中的全局变量时遇到了一些麻烦……
在我的程序里,我声明了两个全局变量,分别是:
global SYNC_DATA 和
global SYNC_TOTAL_SIZE
现在在我的一个函数里,我可以直接使用全局变量SYNC_DATA,而不需要在函数里再次声明它为全局变量;但是,我却不能以同样的方式使用另一个全局变量SYNC_TOTAL_SIZE。我必须在函数里再次声明它为全局变量才能使用。如果我不这样做,就会出现一个错误,提示“UnboundLocalError: local variable 'SYNC_TOTAL_SIZE' referenced before assignment”(局部变量'SYNC_TOTAL_SIZE'在赋值前被引用)。
为什么有时候我可以在函数里直接访问全局变量,而有时候又不行呢?为什么在函数里已经声明过一次的变量,还需要再声明一次为全局变量呢……函数为什么不直接在全局范围内查找这个变量呢,如果在它自己的范围内找不到的话?
2 个回答
0
因为 SYNC_TOTAL_SIZE
可能在代码的其他地方被当作非全局变量使用,这让Python找到了它,并认为它不是全局的。另一个原因可能是你在某个函数里刚刚读到它,所以它不需要声明为 global
(想了解更多,可以看看这个问题)。要准确诊断问题,最好提供一个简单的代码片段来展示你的问题。
建议是,当你确实想要使用全局变量时,记得一定要加上 global
声明。
6
假设 SYNC_TOTAL_SIZE
这个变量没有被声明为局部变量。你对全局变量进行什么操作会影响是否需要声明它。如果只是读取这个全局变量的值,那就不需要特别声明它为全局变量。但如果你要修改这个全局变量的值,就必须用 global
来声明它。