Python的模块#

本讲大纲#

  • 介绍什么是Python模块

  • 介绍如何创建Python模块

  • 介绍如何使用Python模块

  • 介绍Python模块的组织结构

什么是模块?#

  • 模块(Module)是一个包含Python定义和语句的以.py为后缀的文件。(Python官方文档)

  • 模块是一种组织形式,把彼此有关系的Python代码组织到一个个独立文件当中(《Python核心编程》)

创建模块#

  1. 创建一个命名为mymodule.py的文件;

  2. 打开mymodule.py,创建一个main函数,保存文件

导入模块#

  • 模块名即为.py文件不带后缀的文件名,这里是mymodule;

  • 函数名即为<模块名>.<模块内的函数名>,这里是mymodule.main。

import my_module
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 1
----> 1 import my_module

ModuleNotFoundError: No module named 'my_module'
my_module.func()
import math
math.sqrt(5)
# 导入自建模块
import mymodule

from imp import reload
reload(mymodule)
# 使用自建模块中定义的函数
mymodule.main()

也可以导入某一个Python对象

from mymodule import main
main()
import my_package
my_package.my_module.main()
import my_package.my_module as my_module2
my_module2.main()
from my_package.my_module import main
main()
import my_new_module

模块内结构(重点)#

  • 头部注释

  • 导入模块

  • 模块内的全局变量

  • 定义函数

  • 定义函数

  • 主函数

拓展知识#

  • 为什么要用<模块名>.<函数名>的方式调用?为了防止不同的模块中有相同的函数名冲突。

  • 在教学环境中我们使用的是Jupyter Notebook,可以简单理解为一个加强版的Python解释器,教学环境中实现的效果和在Python解释器中实现基本相同,在IDE中的实现效果在后面的教程再演示。

  • 在一个Python环境中,模块导入以后不会再重复导入覆盖,如果在运行过程中模块中途有更新,需要使用reload函数实现重新导入;使用IDE运行代码通常情况下会创建一个新的Python环境,所以问题被掩盖了。

  • 关于Python模块和导入系统的更多知识,详见本系列课程的第八章。

本讲作业#

  • 创建一个自定义模块,并在Python解释器环境中导入模块。

作业1#

import mymodule
mymodule.ROOT_URL
mymodule.list_primes(100)
from mymodule import Vector
vector1 = Vector(1,2,3)
vector2 = Vector(2,2,3)
vector3 = Vector(3,4,5,4)
vector1 + vector2
vector1 + vector3