Python 当模块导入自身时,全局变量会发生什么变化
我有以下模块: 这个mod.pyPython 当模块导入自身时,全局变量会发生什么变化,python,import,module,scope,global,Python,Import,Module,Scope,Global,我有以下模块: 这个mod.py var = 99 def local(): var = 0 # Change local var def glob1(): global var # Declare global (normal) var += 1 # Change global var var = 100 def glob2(): var = 0 # Change local var
var = 99
def local():
var = 0 # Change local var
def glob1():
global var # Declare global (normal)
var += 1 # Change global var var = 100
def glob2():
var = 0 # Change local var
import thismod # Import myself
thismod.var += 1 # Change global var
def glob3():
var = 0 # Change local var
import sys # Import system table
glob = sys.modules['thismod'] # Get module object (or use __name__)
glob.var += 1 # Change global var
def test():
print(var)
local(); glob1(); glob2(); glob3()
print(var)
driver.py
import thismod
thismod.test()
我的问题在glob2中,所以glob1显然将var更改为100。当模块在glob2中导入自身时,是否会获得全局变量“var”的新副本?我不明白**thismod.var+=1**如何更改原始的“var”
当模块在glob2中导入自身时,是否会获得全局变量“var”的新副本
没有。执行import foo
时,如果先前已导入foo
,则会使用现有引用
import sys
import foo
print foo is sys.modules['foo']
oldfoo = foo
import foo
print foo is sys.modules['foo']
print foo is oldfoo
如果您直接运行了
thismod.py
,则不会。但如果它是从另一个脚本导入的,则是。