你有三个文件:main.py、second.py 和 common.py
通用.py
#!/usr/bin/python
GLOBAL_ONE = "Frank"
主要.py
#!/usr/bin/python
from common import *
from second import secondTest
if __name__ == "__main__":
global GLOBAL_ONE
print GLOBAL_ONE #Prints "Frank"
GLOBAL_ONE = "Bob"
print GLOBAL_ONE #Prints "Bob"
secondTest()
print GLOBAL_ONE #Prints "Bob"
第二个.py
#!/usr/bin/python
from common import *
def secondTest():
global GLOBAL_ONE
print GLOBAL_ONE #Prints "Frank"
为什么 secondTest 不使用其调用程序的全局变量?如果事实上它不是,那么称其为“全局”有什么意义!?
为了让 secondTest(或我从 main 调用的任何外部函数)识别和使用正确的变量,我错过了什么?
最佳答案
global
意味着这个模块是全局的,而不是整个程序。当你做的时候
from lala import *
您将lala
的所有定义作为locals 添加到此模块。
因此,在您的情况下,您会得到两份 GLOBAL_ONE
关于Python全局变量疯狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119287/