6.1.模块(Modules)
6.1.1.概念:将实现某一特定功能的代码放置在一个文件中,以便于其它程序进行导入使用,可以避免函数名,变量名的冲突,该文件称未模块,扩展名为 .py
6.1.2作用:
- 模块=函数+类+变量
- 程序规模不断变大需要分为多个文件,以提高维护性
- 模块可以重复的导入,提高重用性
6.1.3.分类
内置模块:当前使用,python内置模块大概有200多个标准模块
sys | 解释器及系统相关 |
time | 时间模块 |
urllib | 读取互联网服务的标准库 |
nath | 数学类 |
re | 正则 |
自定义模块:第三方模块
6.1.4.模块导入的常见的方法:五种
- import 模块莫名
- from 模块名 import 功能名
- from 模块名 import *
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
6.1.5.使用import 导入模块
- import 模块名
- import 模块名1,模块名2.。。。。#(导入多个模块)
import math
print(math.sqrt(9))
6.1.6.使用from......import语句导入模块
作用:使用import导入模块时如果只需要部分函数可以通过from语句实现
注意:使用时不需要增加模块名前缀
from math import sqrt,floor
print(sqrt(9)),floor(10.88)
6.1.7.使用as关键字为导入模块定义别名
原因:某些情况下模块名称过长,建议使用as命名一个较为短的新名称,调用时使用新名称进行操作
import time as t
print('hello')
t.sleep(3)
print('world')
注意:使用from......import导入模块,必须保证导入内容名称时唯一,若导入的模块有相同的变量,函数,类则会覆盖之前导入的同名内容,因此需要检查,别名应简洁
6.1.8.自定义模块
作用:将相关的代码写在一个单独文件中,自行创建的模块名称不能与标准中的模块名重名
例1:新建一个模块文件,实现素数判断
在当前目录下新建文件prim.py
输入代码
def fun_prime(num):
if num < 2:
print('请输入大于2的整数')
else:
for i in range(2, num):
if num % i == 0:
return 0
else:
return 1
新建一个Python文件加载上述模块,实现100以内的素数
import prime
for i in (2, 100):
if prime.fun_prime(i) == 1:
print(i, end=' ')
自定义模块的功能测试
作用:在编写完自定义模块以后,最后在模块中对代码进行提前测试,以防止抛出异常
魔方方法:_ _name_ _():每个模块的定义中都包括一个记录模块名称的字符串变量(_ _name_ _),随着运行的页面不同,返回不同
当前页面执行:返回结果为_ _main_ _
print(__name__)
def fun_prime(num):
if num < 2:
print('请输入大于2的整数')
else:
for i in range(2, num):
if num % i == 0:
return 0
else:
return 1
在其他文件调用执行:模块文件名
随着程序执行的位置不同,_ _name_ _返回结果也不同, 结论:模块
def fun_prime(num):
if num < 2:
print('请输入大于2的整数')
else:
for i in range(2, num):
if num % i == 0:
return 0
else:
return 1
if __name__=='__main__': #如果是当前页面执行
if fun_prime((5)):
print('素数')
else:
print('平数')
#此时不需要其它程序就可以在本文件着中执行
注意:_ _name_ _ 一般用于自定义模块测试,还可以用于编写程序的入口:
def main():
# 执行功能
#打印的功能
#增删的功能
if _ _name_ _=='_ _name_ _ '
main()
6.1.9.模块搜索目录
当前用import语句导入模块时,默认情况会按照一下顺序查找
- 执行python文件的当前目录
- python(环境变量)
- python解释器安装目录
可以通过sys.path中查找搜索目录
import sys
print(sys.path)
6.2 .包(package)
6.2.1.概念:将有连续的模块组织在一起,放置到同一个文件夹下,并且该文件内部有一个名_ _init_ _.py的文件,此文件夹集合称为包
6.2.2._init_ _.py文件再创建包后会自动新建,默认为空,其作用:
包的标识,不能删除
定义all语句来规定哪些模块可以导入(白名单)
编写python代码(不推荐),应内容简略
6.2.3制作包
方法:左侧侧边栏点击右键->New->Python Package->输入包名称->回车->在包中新建模块
注意:新建包后,_init_ _.py会自动创建
6.2.4导入包:
格式1:import包名 .模块名(包.模块名.方法名形式进行使用)
格式2:from包名import 模块名(模块.方法名 进行使用)
注意:格式2的from形式导入的包中某个模块时,必须在_init_ _.py中添加all=['模块1.py','模块2.py‘,'模块.py]
6.7.