基于上次的异常基本知识,本篇总结python中模块和包知识点。
模块
python模块(Module),是一个python文件,以 .py 结尾,包含了python对象定义和python语句。模块能定义函数、类和变量,里面也可以有其他可执行代码。
导入模块
导入模块方式
- import 模块名
- from 模块名 import 功能名
- from 模块名 import *
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
导入方式详解
import
语法
1
2
3
4
5
6# 导入模块
import 模块名
import 模块名1,模块名2... # 不推荐
# 调用功能
模块名.功能名()
from … import …
语法
1
from 模块名 import 功能名1,功能名2...
体验
1
2from math import sqrt
print(sqrt(9))
from 模块名 import *
语法
1
from 模块名 import *
体验
1
2from math import *
print(sqrt(9))
as 定义别名
如果定义了别名,只能使用别名,不可再使用模块名。
语法
1
2
3
4
5# 模块定义别名
import 模块名 as 别名
# 功能定义别名
from 模块名 import 功能名 as 别名体验
1
2
3
4
5
6
7
8
9
10# 模块别名
import time as tt
tt.sleep(2)
print('hello')
# 功能别名
from time import sleep as sl
sl(2)
print('hello')
制作模块
在python中,每个python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说自定义模块必须符合标识符命名规则。
定义模块
新建一个python文件,命名my_module1.py
,并定义testA
函数。
1 | def testA(a, b): |
测试模块
在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,会自行在py文件中添加一些测试信息。例如,在my_module1.py
文件中添加测试代码。
1 | def testA(a, b): |
此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行testA
函数的调用,即结果2。
为此,解决方法如下:
1 | def testA(a, b): |
关于
__name__
:
若在本文件内运行该函数,则为
__main__
若在其他文件,例如导入该文件模块,则为my_module(文件名)
包
包将有联系的模块组织在一起,即放到同一个文件夹下,并且在文件夹内创建一个名字为__init__.py
文件,那么这个文件夹就称之为包。
制作包
右键 — [new] — [Python Package] — 输入包名 — [OK] — 新建功能模块(有联系的模块)。
注意:新建包后,包内自动创建__init__.py
文件,控制着包的导入行为。
体验
新建包
myPackage
新建包内模块:
my_module1
和my_module2
模块内代码如下
1
2
3
4
5# my_module1
print(1)
def info_print1():
print('my_module1')1
2
3
4
5# my_module2
print(2)
def info_print2():
print('my_module2')
导入包
方法一
1 | import 包名.模块名 |
体验
1 | import myPackage.my_module1 |
方法二
注意:必须在__init__.py
文件中添加__all__ = []
,控制允许导入的模块列表。
1 | from 包名 import * |
体验
1 | from myPackage import * |