今儿又踩了一个坑,文件结构如下:
# testlib1/testModule
num = 1
# -*- coding: utf-8 -*-
from PythonBaseUse.pythonBug.twoerror.testlib1 import testModule
print(testModule.num)
testModule.num = 2
print(testModule.num)
输出结果如下:
嗯!很合情合理!
# -*- coding: utf-8 -*-
from PythonBaseUse.pythonBug.twoerror.testlib1 import testModule
from PythonBaseUse.pythonBug.twoerror.testlib1.testModule import num as testModuleNum
print(testModuleNum, testModule.num)
testModule.num = 2
print(testModuleNum, testModule.num)
输出结果如下:
开始不对味了! 明明修改了testModule.num的值,testModuleNum却不变!
我们可以在debug模式下查看一下
从上图就一目了然了:
testModuleNum在初始化的时候就被定义成一个变量保存起来了,并且与原模块testModule是没有依赖关系的
为了验证上述猜想我们做如下代码
# -*- coding: utf-8 -*-
from PythonBaseUse.pythonBug.twoerror.testlib1 import testModule
from PythonBaseUse.pythonBug.twoerror.testlib1.testModule import num as testModuleNum
print(testModuleNum, testModule.num)
testModule.num = 2
print(testModuleNum, testModule.num)
testModuleNum = 10
print(testModuleNum, testModule.num)
输出结果如下:
结果证实了我们的猜想:
testModuleNum在初始化的时候就被定义成一个变量保存起来了,并且与原模块testModule是没有依赖关系的!
别名(as) 相当于是初始化了一个与原模块不存在依赖关系的变量!