课程名称:全面系统Python3.8入门+进阶(程序员必备第二语言)
课程章节:7-7 import导入模块
主讲老师:7七月
课程内容:
今天学习的内容包括:
import导入模块
课程收获:
对于重复的变量或者其他内容,我们是需要从其他模块里去引用的。
把一些共用的东西或者重复的东西,提取出来放在一个模块下面,然后再其他模块里去引用。而不需要重复。
未引用就会报错
以上在第一个口快里定义了一个变量,第二个模块直接使用,来print是会报错的。我们一定要把a这个变量从第一个模块导入到第二个模块。
导入语法:
import moudle_name
import后只能跟模块名。
因为C7只是模块名,我们如果要使用c7下面的变量a,我们须通过模名.某一个变量的方式来使用这个a,否则的话变量a是找不到的。
所以说引入模块下的某一个变量或者函数等,路径的命名是一样的。
print(c7.a) import c7
以上执行结果报错。
调换import位置后,执行代码运行成功,成功返回变量a 的值。
刚刚我们顺序的颠倒,python他是一个解释型的语言,所以当python去运行代码的时候,他必须要遵守一个先后的顺序,如果在引用c7之前就先去使用c7这个模块的话,我们python的解释器是会报错的。因为当解析到第一行的时候,python解释器还不知道c7是什么。所以说他会报错。这个特征并不是python是这样,很多解释型语言都是这样的规则,但是对于一些编译型语言来说,他可以然给你先使用后定义。但总体上来说还是建议遵循先定义后使用的规则来编写代码。这样是符合我们的思维逻辑的。
除此之外,我们代码已经正确运行了,但我们pylint还是提示import有错误,没法导入。这个并不是python语法的问题,是vscode对他一个解析的问题。如果你使用pycharm他就不会提示错误。
刚才我们看到的位于统一级别的模块进行引用,有一种特殊情况。下图-将c7.py放在另一个文件夹下。这个时候我们在运行c8.py,可以看到是会报错的。
解决方式,还是命名空间的问题。把import引用的路径按照新的路径去修改。
import t.c7 # 引用路径修改成最新路径 print(t.c7.a) #
可以看到,当我们运行代码后文件夹内自行生成了一个文件夹__pycache__,同时文件夹内还生成了一个.pyc的文件,这是python解释器所定义的一个自解码文件。
总结
import导入的只能是一个模块,我们是不能够在import下面直接导入模块下的变量,这样是不行的。由于import只能导入模块,当我们要引用模块的变量名的时候呢,就需要用‘模块名.变量名’的方式来引用。这也是很多人认为import的一个缺陷。他会让你的代码长度有所增加,假如说你的包的嵌套是比较复杂的,比如有5,6层的话。他引用起来确实会比较麻烦。
简化路径方法:as
import t.c7 as m print(m.a)
好处:你一眼就能看到a变量到底属于哪个包,哪个模块。