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__=[],允许导入的模块列表。