概述
Python中模块主要分为:标注模块(库)、第三方模块(库)、自定义模块 一个模块是一个扩展名为 *.py 的文件 使用模块的优点:
- 每个模块有特定的应用域,可以有效避免函数名和变量名冲突
- 引用模块可以使文件更小且分工明确,更容易查找代码
- 可以提高代码的可重用性
- 可以有选择的使用
创建自定义模块
一般情况下模块包含以下几部分:
模块应当保存为名称为 模块名.py 的文件,且模块名不能为 Python 自带的标准模块名称。示例如下: 创建一个模块,写入如下代码,并保存为名为 calculate.py 的文件
def add(a,b):
return round(a + b,1)
在同一文件夹下,创建一个文件,并输入如下代码进行模块引用
import calculate
a = 0.1
b = 0.2
print(a + b)
print( calculate.add(a,b)
运行结果:
0.30000000000000004
0.3
导入模块
使用 import 导入模块
语法: import moduleName [as alias] ,其中 as alias 为可选参数,是引用模块的备用名称。 import 还可以同时导入多个模块,多个模块之间用 , 分割 示例 略
使用 from ··· import 导入模块
语法:form modelName import member
关键词 | 说明 |
---|
modelName | 要导入的模块名称 | member | 要从模块中导入的 变量、函数、类 等 可以同时导入多个定义,之间需要用 , 分隔 如果需要导入模块中的全部定义,使用 * 作为 member 参数即可 |
示例讲解,如何导入两个包括同名函数的模块: 创建两个模块 “rectangle.py”(矩形),“circular.py”(圆形),它们都包含计算周长(Perimeter)和面积(area)的函数 第一步,创建矩形模块 rectangle.py
def girth(width,height):
'''计算周长的函数'''
return (width+height)*2
def area(width,height):
'''计算面积的函数'''
return width*height
if __name__ =='__main__':
print(area(10,20))
第二步,创建圆形模块 cricular
import math
PI = math.pi
def girth(r):
'''计算周长的函数'''
return round(2*PI*r,2)
def area(r):
'''计算面积的函数'''
return round(PI*r*r,2)
if __name__ =='__main__':
print(area(10))
第三步,导入模块。
from rectangle import *
from cricular import *
if __name__ == '__main__':
print('圆形周长:', girth(10))
print('矩形周长:', girth(10,20))
import rectangle as r
import cricular as c
if __name__ == '__main__':
print('圆形周长:', c.girth(10))
print('矩形周长:', r.girth(10,20))
模块搜索目录
以上案例是将模块与需要运行的文件放在同一个文件夹的,当二者不在同一个文件夹时,就不能够正常引用了。 究其原因,需要清楚在使用 import 语句导入模块时,它是按照什么顺序去搜素模块文件的,我们可以通过标准模块 sys 中的 path 变量来获取。 例如:
import sys
print(sys.path)
输出结果:
['C:\\ProgramData\\Anaconda3\\python38.zip', 'C:\\ProgramData\\Anaconda3\\DLLs', 'C:\\ProgramData\\Anaconda3\\lib', 'C:\\ProgramData\\Anaconda3', '', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\locket-0.2.1-py3.8.egg', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\风转砂\\.ipython']
可以看到,程序输出了一个地址列表,其中的地址就是 python 在导入模块时,默认搜索的路径顺序,以上路径查找不到时,python 则不会再进行搜索了。 此时导入模块就需要进行“搜索目录”,python 共提供了三种方法:
- 临时添加
- 增加
.pth 文件 (推荐) - 在 PYTHONPATH 环境变量中进行添加
临时添加
语法:
import sys
sys.path.append('moduleFloderPath')
import moduleName
block
增加 .pth 文件
在python的安装目录\Lib\site-packages 文件夹下,创建一个 .pth 文件,在文件中输入:
要导入模块所在的文件夹地址
修改环境变量
方法如下:
包
创建包
在文件夹中创建一个名为 settings 的文件夹,然后在 settings 文件夹中创建一个名为 __init__.py 的空文件,此时 settings 文件夹就成为了一个 “包” ,之后就可以在包中创建所需要的模块了。
使用包
所谓使用包,就是利用 import 语句,从包中调取模块,通常有三种模式:
示例:在包的同一级文件夹( D:\python )下创建一个 demo.py 文件,对 cricular 模块进行引用
import settings.cricular
print('周长 girth:', settings.cricular.girth(10))
应当注意,在使用模块的方法时,也应引用完整的包名,即 settings.cricular.girth(10) 当然,也可以使用以下代码实现更简洁的操作
import settings.cricular as c
print('周长 girth:', c.girth(10))
- from + 完整包名 + import + 模块名
from settings import cricular
print('周长 girth:', cricular.girth(10))
注意,使用该方法时,引用模块不需要引用包名,即 cricular.girth(10) 同样也可以使用以下代码,实现更简洁的操作
from settings import cricular as c
print('周长 girth:', c.girth(10))
- form + 完整报名.模块名 + import + 定义名
from settings.cricular import girth
print('周长 girth:', girth(10))
注意,使用该方法时,引用模块的方法时,不需要引用包名和模块名,可以直接使用方法,即 girth(10) 同样也可以使用以下代码,实现更简洁的操作
from settings.cricular import girth as g
print('周长 girth:', g(10))
导入模块
导入标准模块
import random
number = random.randint(0,10)
print(number)
Python 提供了标准库的帮助文档,文档为 安装目录\Python\Python3.6\Doc 地址下的 python364.chm 文件
第三方库的下载与安装
主要有两种方法:
- 可以在网址
https://pypi.org/ 下载,或者原网址 http://pypi.python.org/pypi - 使用
pip 命令安装 pip \<command\> [modulename]
参数 | 说明 | 值 |
---|
command | 要执行的操作 | install (安装模块) uninstall (卸载模块) list (列举已经安装的第三方模块) | modulename | 模块名称 | 如果 command 参数的值为 install , uninstall 时,参数是必需的; 否则,参数不可选 |
注意,以上命令不是在 IDLE 中执行,而是要在 cmd 中执行的。
|