以下是我的文件和输出。我想做的只是在func1()
20
后获得x
的值。我已经提到了这个答案。我想知道为什么这不起作用?是否有必要使用import globalVar
而不是from globalVar import *
globalVar.py
#globalVar.py
x=10
fun1.py
from globalVar import *
def func1():
global x
x=20
print("X in fun1",x)
main.py
from fun1 import *
from globalVar import *
print("X before fun1=",x)
func1()
print("X after fun1=",x)
输出:
X before fun1= 10
X in fun1 20
X after fun1= 10
更新的答案:
试试这个:
GlobalVar.py:
global x
x = 10
fun1.py:
import GlobalVar
def func1():
GlobalVar.x = 20
print("X in fun1", GlobalVar.x)
main.py:
from fun1 import *
from GlobalVar import *
print("X before fun1=", GlobalVar.x)
func1()
print("X after fun1=", GlobalVar.x)
检查这一点,这将根据您的问题为您提供所需的输出。
希望这对您有所帮助!谢谢!:)
注意:globals 表字典是当前模块的字典(在函数内部,这是一个定义它的模块,而不是调用它的模块(
这不起作用的原因是main.py 中的 fun1(( 方法调用不会返回 x ie 20 的更新值。这就是为什么更新的 x 的范围仅在执行结束后才在 fun1 中,值会丢失,而当您第三次打印 x 的值时,它只是引用回全局变量
以下是您可以采取哪些措施来使其工作1.fun1.py
from globalVar import *
def func1():
global x
x=20
print("X in fun1",x)
return x //here it returns the value of 20 to be found later
2.globalVar.py
x=10
3.main.py
from fun1 import *
print("X before fun1=",x)
x = func1()//here the updated value of x is retrived and updated, had you not done this the scope of x=20 would only be within the func1()
print("X after fun1=",x)