目标
- 了解模块
- 导入模块
- 制作模块
- all
- 包的使用方法
一模块
Python模块,是一个python文件,以.py结尾,包含了python对象定义和python语句。
模块能定义函数,类和变量,模块里也能包含可执行代码。
1.1导入模块
1.1.1导入模块方式
- import 模块名
- from 模块名 import 功能名
- from 模块名 import*
- import 模块名 as 别名
- from 模块名 import 功能名as 别名
1.1.2导入方式详解
1.1.2.1import
语法
import 模块名 import 模块名1,模块名2..... #调用功能 模块名.功能名()
体验
import math print(math.sqrt(9)) #3.0
1.2.2 from…import…
语法
from 模块名 impotr 功能1,功能2.。。
体验
from math import sqrt sqrt(9)
1.2.3 from…import *
from math import * print(sqrt(9))
1.2.4 as定义别名
语法
#模块定义别名 import 模块名 as 别名 #功能定义别名 from 模块名 import 功能 as 别名
体验
import time as tt tt.sleep(2) print('hello') from time import sleep as s1 s1(2) print('hello')
1.2制作模块
在python中,每个python文件都可以作为一个模块,模块得名字就是文件得名字。也就是自定义模块名必须要符合标识符命名规则。
1.2.1 定义模块
新建一个python文件,命名位my_module1.py,并定义testA函数。
1.2.2测试模块
在实际开发中,当一个开发人员编写玩一个模块后,为了让模块能够在项目中达到想要得效果,开发人员会在行在py文件中添加一些测试信息,例如,在my_module1.py文件中添加测试代码
def tetA(a,b): print(a+b) if __name__=='__main__': tetA(2,2)
/
import my_module my_module.tetA(2,2)
注意:在自己导入模块是 会有红色得下划线,但是不影响运行。如果一定要处理 查看这个链接
1.3模块定位顺序
当导入一个模块,python解释器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录,Python则搜索在shell变量PYTHONPATH的每个目录。
- 如果都找不到,python会查看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
模块搜索路径存储在system模块的sys.path变量中。变量包含当前模块中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
注意
- 自己的文件名不要和已有文件名重复,否则导致模块功能呢无法使用
- 使用from 模块名 import 功能的时候,如果功能名字重复,调用到的是最后定义或导入的功能
#自己的文件名不要和已有文件名重复 import random num=random.randint(1,5) print(num) """ num=random.randint(1,5) AttributeError: module 'random' has no attribute 'randint' """
def sleep(): print('自定义sleep') from time import sleep sleep(2)
我没测试出来
1.4–all–
如果一个模块文件中有__all__变量,使用from xxx import * 导入时,只能导入这个列表中的元素
- my_module1模块代码
__all__=['tetA'] def tetA(): print('testa') def tetB(): print('testb') ## 标题
- 导入模块的文件代码
from my_module1 import * tetA() tetB()
二 、包
包将有联系的模块组织在一起,即放在同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,那么这个文件夹就称作 为包
2.1制作包
【new】-【Python Package】-输入包名-【ok】-新建功能模块(有联系的模块)
注意:新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为。
2.1.1快速体验
1.新建包mypackage
2.新建包内模块:my_module1和my_module1
3.模块内代码如下
print(1) def info_print(): print('my_module1')
print(2) def info_print(): print('my_module2')
2.2导入包
2.2.1方法一
import 包名.文件名 包名.模块名.目标
/
import mypackage.my_module1 mypackage.my_module1.info_print()
2.2.2方法二
注意:必须在__init__.py文件中添加__all__=[ ].控制导入的模块列表
from 包名 import * 模块名.目标
2.2.2.1体验
__all__=['my_module1']
from mypackage import * my_module1.info_print()