python-29-模块与包导入
前言
模块与包导入,经常看到代码里开头那几行都是from xxx import xxx 或者 import xxx,这就是模块与包的导入。
模块的导入推荐顺序:
- 内置模块,如os,sys
- 扩展模块,django
- 自定义模块,自己封装的模块
一、模块导入
- 1.modules里查找是否存在模块,存在即被导入,否则sys.path依次查找模块,找到导入,否则找不到调用时会报错
- 2.创建这个模块的命名空间
- 3.把文件的名字放到命名空间
1、模块不会重复被导入 : sys.moudles;从哪儿导入模块 : sys.path
2、import后导入的模块直接被执行
# 1、import后导入的模块直接被执行 import test
3、模块起别名,直接在后面as xxx
# 2、模块起别名 import test as t print(t.f())
模块起别名的好处:①模块名太长,可以起短的名字;②提高代码兼容性
# 起别名的好处例子:提高兼容性,调用的时候全用:db.xxx if db == 'mysql': import pymysql as db elif db == 'sqlsv': import sqlsv as db else:import nodb db
4、form导入,根据sys.path找,time 将不能使用,可以import多个
5、import * (不推荐用)
# 4、import * 不推荐用 from time import * sleep = 1 # 万一方法与变量命名重复会报错 sleep(1)
6、py文件内运行,在模块中 有一个变量__name__如果等于__mian__那么就在本模块中运行,否则不运行。
在代码最后加一句 if __name__ == '__main__':,后面接在本模块中运行的代码:
if __name__ == '__main__': xxx
总结:
①import 模块名:模块名.变量名
- 和本文件中的变量名完全不冲突
②from import:from 模块名 import 变量名
- 直接使用 变量名 就可以完成操作
- 如果本文件中有相同的变量名会发生冲突
③from 模块名 import *
- 将模块中的所有变量名都放到内存中
- 如果本文件中有相同的变量名会发生冲突
二、包导入
什么叫包?把解决一类问题的模块放在同一个文件夹里,就好像类下面有多个方法可以调用。
1、比如我要在api模块中导入common模块,那么先要导入common.com包再importcommon:
2、一个包下有多个模块:
3、pycharm中新建包:
如果报找不到xxx模块的错误,可以使用 sys.path 查看环境变量进行调节或将它加入环境变量。
欢迎来大家QQ交流群一起学习:482713805