1. 模块的导入
1.1 模块的导入方式
模块的介绍:在Python中,一个.py文件就是一个模块
导入模块的方式:
方式一:
import 模块名
方式二:
from 模块名 import 成员名
导入所有的成员
from 模块名 import *
起别名:
import 模块名 as 别名
from 模块名 import 成员名 as 别名
区别:
1.import是拿到了模块对象的地址,通过地址来使用模块中的成员名,对于import方式来说,没有任何的限制
2.from-import,有些成员不能被导入的,比如私有的,但是可以使用__all__=[]来进行设置
使用方式
模块名.成员名
from-import的方式直接可以使用成员名,但是也有一定的弊端
案例:
# 方式1
import p_01自定义模块
# 使用的时候需要 模块对象.成员
p_01自定义模块.show()
# 方式1的起别名 as
import p_01自定义模块 as a
print(a.n)
a.show()
# 方式二 导入的时候直接使用成员名即可
from p_01自定义模块 import n
from p_01自定义模块 import show
from p_01自定义模块 import Cat as CatClass
print(n)
show()
CatClass().show()
1.2 魔法方法 all
__all__ = ['x','_y','__z']
x = 1
_y = 2
__z = 3
可以改变在使用 from-import 方式导入模块时,成员的导入规则
from p_04模块 import *
print(x)
# print(_y) 报错
# print(__z) 报错
# 解决办法使用__all__进行
print(_y)
print(__z)
1.3 模块的查找顺序
- 当前程序所在目录
- 在当前程序所在工程的根目录
- PYTHONPATH
- 系统目录
- site_packages 第三方模块的安装目录
1.4 name
如果__name__ 出现在当前执行的模块中时,得到的值是 main 这个字符串,用来表示执行的是当前文件
如果__name__ 出现在在了被导入模块中时,得到的值是被导入模块的模块名
使用name来进行判断,在导入模块的时候不执行里边其他的测试代码,只是导入里边的成员
import p_01自定义模块
if __name__ == '__main__':
print('程序的入口')
print(__name__)
2. 导包
包:就是一个文件夹
在pytohn3以前,包中有一个文件__init__.py
python3以后,包就是一个文件夹
2.1 导包的方式
方式一:导入模块名
import 包名.模块名
from 包名 import 模块名
from 包名.模块名 import 成员名
方式二:导入报名
import 包名
from 包名 import *
在导入时,不会指定模块名,只指定包名
这时,默认情况下(__init__.py 为空)哪个模块都不会导入
import cn.a
print(cn.a.n)
from cn import b
print(b.m)
# 导入b模块中的所有成员
from cn.b import *
print(z)