模块中的全局变量范围



以下是我的文件和输出。我想做的只是在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)

相关内容

  • 没有找到相关文章

最新更新