7.模块和包
1.了解模块
python模块(Module),是一个python文件,以.py结尾,包含了python对象定义和python语句。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
1.1.导入模块之方法一
导入模块的方式: ①import 模块名 ②from 模块名 import 功能名 ③from 模块名 import* ④import 模块名 as 别名 ⑤from 模块名 import 功能名 as 别名
1.2 导入方式详解
①import
语法:
1.导入模块 import 模块名 import 模块名1,模块名2.... 2.调用功能 模块名.功能名()
②from...import...
语法: from 模块名 import 功能1,功能2,功能3....
③from..import*
语法:
from 模块名 import * //*:代表所有功能
④ as定义别名
# 定义别名 import 模块名 as 别名 # 功能定义别名 from 模块名 import 功能 as 别名
2.制作模块
在python中,每个模块文件都可以作为模块,模块的名字就是文件的名字。
也就是说 自定义模块名必须符合标识符命名规则。
1.2.1定义模块
新建一个python文件,命名为my_module.py,并定义函数testA函数
def testA(a,b):
print(a + b)
2.1测试模块
此时,无论是当前文件,还是其他已经导入了这个模块的文件,在运行的时候都会自动执行testA函数的调用。
解决办法如下:
核心就是说:
在调用自己的模块当中,__name__就等于my_module
在自己写的模块本身当中,__name就等于__main__
所以在调用自己的模块当中呢,if __name__ == '__main__': 是不成立的,所以是不会调用测试语句的
2.2 模块定位顺序
当导入一个模块,python解释器对模块位置的搜索顺序是:
1.当前目录
2.如果不在当前目录,python则搜索在shell变量PYTHONPATH的每个目录
3.如果都找不到,python会察看默认路径。
unix下一般是/usr/local/lib/python/
模块搜索路径存储在system模块的sys.path变量中。
变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
注意:
1:自己的文件名不要和已有的模块名重复,否则导致模块功能可能无法使用 2:使用from 模块名 import 功能的使用,如果功能名重复,调用到的最后定义或导入的功能
注意事项1:
注意事项2:
2.3__all__列表的作用:允许导入的模块或功能列表
如果一个模块文件中有__all__变量,当使用from 模块名 import *导入时,只能导入这个列表得元素。
①my_module2模块代码
②导入模块得文件代码
3. 了解包
包将有联系的模块组织在一起,即放在同一个文件夹下,并且在这个文件夹创建一个名字为___init___.py文件,那么这个文件夹称之为"包"。
3.1 制作包
注意:新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为.
3.2 制作包
3.3 导入包
导入包方法一:
1.导入 import 包名.模块名 2.调用 包名.模块名.函数
导入包方法二:
注意:必须在__init__.py文件中添加__all__=[],允许导入的模块列表。