first.py
myGlobal = "hello"
def changeGlobal():
myGlobal="bye"
second.py
from first import *
changeGlobal()
print myGlobal
我得到的输出是
hello
虽然我认为应该是
bye
为什么调用changeGlobal()
函数后全局变量myGlobal
没有变化?
最佳答案
试试:
def changeGlobal():
global myGlobal
myGlobal = "bye"
实际上,这也行不通。当您 import *
时,您创建了一个新的 local 模块全局 myGlobal
,它不受您想要的更改的影响(只要您不是改变变量,见下文)。你可以改用这个:
import nice
nice.changeGlobal()
print nice.myGlobal
或者:
myGlobal = "hello"
def changeGlobal():
global myGlobal
myGlobal="bye"
changeGlobal()
但是,如果您的 global 是一个可变容器,那么您现在持有对可变容器的引用并且能够看到对其所做的更改:
myGlobal = ["hello"]
def changeGlobal():
myGlobal[0] = "bye"
关于python - 带导入的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4706879/