python中的一个坑—— import 和 import xxx as XX的区别

学习python 我们必然会用到import

今儿又踩了一个坑,文件结构如下:
在这里插入图片描述

# 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) 相当于是初始化了一个与原模块不存在依赖关系的变量!

猜你喜欢

转载自blog.csdn.net/weixin_40301728/article/details/125506563
今日推荐