背景
python 的 import 语句会直接运行模块,所以当模块顶层有直接调用时,调用会直接运行。
# a.py
print('test')
# b.py
import a
python b.py
# test
风险点
reload 模块会导致被修改的顶级变量被重置,造成数据丢失。所以在reload 前,一定要想好是不是要这么操作。
# a.py
a = 1
# b.py
import a
print(a.a) # 1
# a模块中变量被修改
a.a += 1
print(a.a) # 2
# 实际上并未重载a模块
import a
print(a.a) # 2
from imp import reload
# 重载a模块
reload(a)
# a模块中变量全部被重新赋值
print(a.a) # 1