Python 中的模块
一、模块概述
模块的英文是 module, 可以认为是一盒(箱)主题积木,通过它可以拼出某一主题的东西。这与函数不同,一个函数相当于一块积木,而一个模块中可以包括很多函数,也就是很多积木, 所以也可以说模块相当于一盒积木。
在 Python 中,一个扩展名为.py 的文件就称为一个模块。通常情况下,我们把能够实现某一特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用。另外,使用模块也可以避免函数名和变量名冲突。我们知道对于Python 代码可以写在一个文件中。但是随着程序不断变大,为了 便于维护,需要将其分为多个文件,这样可以提高代码的可维护性。另外,使用模块还可以提高代码的 可重用性。即编写好一个模块后,只要是实现该功能的程序,都可以导入这个模块实现。
二、自定义模块
在 Python 中,自定义模块有两个作用,一个是规范代码,让代码更易于阅读,另一个是方便其他 程序使用的已经编写好的代码,提高开发效率。自定义模块主要分为两部分,一部分是创建模块,另一 部分是导入模块。
1. 创建模块
创建模块可以将模块中相关的代码(变量定义和函数定义等)编写在一个单独的文件中,并且将该文件命名为“模块名+ .py” 的形式 。
创建模块时,设置的模块名不能是Python自带的标准模块名称。
2. 使用import 语句导入模块
创建模块后,就可以在其他程序中使用该模块了。使用模块需要先以模块的形式加载模块中的代码, 这 可 以 使 用import 语句实现。import 语句的基本语法格式如下:
import modulename[as alias]
其中:modulename 表示要导入模块的名称;[as alias]表示给模块起的别名,通过该别名也可以使用模块。
在调用模块中的变量、函数或者类时,需要在变量名、函数名或者类名前添加“模块名.”作为 前缀。例如,bmi.fun_bmi, 则表示调用bmi 模块中的fun_bmi()函数。
如果模块名比较长且不容易记住,可以在导入模块时使用 as 关键字为其设置一个别名,然后就可以通过这个别名来调用模块中的变量、函数和类等.
使用 import 语句还可以一次导入多个模块,在导入多个模块时,模块名之间使用逗号 “,” 进行分隔。
3. 使用from…import语句导入模块
在使用import 语句导入模块时,每执行一条import 语句都会创建一个新的命名空间(namespace),并且在该命名空间中执行与 .py 文件相关的所有语句。在执行时,需在具体的变量、函数和类名前加上“模块名.”前缀。如果不想在每次导入模块时都创建一个新的命名空间,而是将具体的定义导入当前的 命名空间中,这时可以使用from…import 语句。使用from…import 语句导入模块后,不需要再添加前缀,直接通过具体的变量、函数和类名等访问即可。
from…import 语句的语法格式如下:
from modelname import member
参数说明如下:
- modelname:模块名称,区分字母大小写,需要和定义模块时设置的模块名称的大小写保持一致。
- member:用于指定要导入的变量、函数或者类等。可以同时导入多个定义,各个定义之间使 用逗号“,”分隔。如果想导入全部定义,也可以使用通配符星号“*”代替。
接下来以具体的例子对前面的内容进行一个加深与总结
eg:创建两个模块:一个是矩形模块,其中包括计算矩形周长和面积的函数;另一个是圆形模块,其中包括计算圆形周长和面积的函数。然后再另一个Python 文件中导入这两个模块,并调用相应的函数计算周长和面积。
具体步骤如下:
- 创建矩形模块,对应的文件名为 rectangle.py, 在该文件中,定义两个函数,一个用于计算矩 形的周长,另一个用于计算矩形的面积,具体代码如下:
def girth(width, height):
"""
计算周长
:param width: 宽度
:param height: 长度
:return: 周长
"""
return (width + height) * 2
def area(width, height):
"""
计算面积
:param width: 宽度
:param height: 长度
:return: 面积
"""
return width * height
if __name__ == '__main__':
print(area(10,20))
2.创建圆形模块,对应的文件名为circular.py, 在该文件中,定义两个函数,一个用于计算圆形的周长,另一个用于计算圆形的面积, 具体代码如下:
import math
Pi = math.pi
def girth(r):
"""
计算周长
:param r: 半径
:return: 圆的周长
"""
return 2 * Pi * r
def area(r):
"""
计算面积
:param r: 半径
:return: 圆的面积
"""
return Pi * r * r
if __name__ == '__main__':
print(girth(10))
3.创建一个名称为compute.py的 Python文件,在该文件中,首先导入矩形模块的全部定义,然 后导入圆形模块的全部定义,最后分别调用计算矩形周长的函数和计算圆形周长的函数,代码如下 :
from rectangle import *
from circular import *
if __name__ == '__main__':
print(f"圆形的周长为:{girth(10)}")
print(f"矩形的周长为:{girth(10, 20)}")
运行结果:
抛出异常,这是因为原本想要执行的矩形模块的girth() 函数被圆形模块的girth() 函数覆盖了。解决方法是,使用import 语句导入模块,而不是使用from…import 语句导入。修改后的代码:
import rectangle as r
import circular as c
if __name__ == '__main__':
print(f"圆形的周长为:{c.girth(10)}")
print(f"矩形的周长为:{r.girth(10, 20)}")
运行结果如下:
三、引用其它模块
在python 中,除了可以自定义模块,还可以引用其他模块,主要包括使用标准模块和第三方模块。
1. 导入和使用标准模块
在 Python 中,自带了很多实用的模块,称为标准模块(也可以称为标准库),对于标准模块,我们可以直接使用import 语句导入Python 文件中使用。例如,导入标准模块random (用于生成随机数), 可以使用下面的代码。
import random
在导入标准模块后,也可以使用as关键字为其指定别名。通常情况下,如果模块名比较长,则可以为其设置别名。
除 了random 模块外, Python 还提供了200多个内置的标准模块,涵盖了Python 运行时服务、文字 模式匹配、操作系统接口、数学运算、对象永久保存、网络和Internet 脚本和GUI 建构等方面。 Python 常用的内置标准模块如下所示。
| 模块名 | 描述 |
|---|---|
| sys | 与Python解释器及其环境操作相关的标准库 |
| time | 提供与时间相关的各种函数的标准库 |
| os | 提供了访问操作系统服务功能的标准库 |
| calendar | 提供与日期相关的各种函数的标准库 |
| urllib | 用于读取来自网上(服务器上)的数据的标准库 |
| json | 用于使用JSON序列化和反序列化对象 |
| re | 用于在字符串中执行正则表达式匹配和替换 |
| math | 提供标准算术运算函数的标准库 |
| decimal | 用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算 |
| shutil | 用于进行高级文件操作,如复制、移动和重命名等 |
| logging | 提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能 |
| tkinter | 使用Python进行GUI编程的标准库 |
除了所列出的标准模块外, Python 还提供了很多可以在Python的帮助文档中查看 具体方法是:打开Python解释器安装路径下的Doc 目录,在该目录中的扩展名为.chm 的文件(如python364.chm)
即 为Python 的帮助文档。打开该文件

打开如下所示:
更多推荐


所有评论(0)