Skip to content

Python模块

想象你在一个巨大的厨房里做饭。如果所有锅碗瓢盆、食材调料都堆在地上,找把盐都要翻半天——这就是把所有代码写在一个文件里的感觉。

模块就是把厨房分成不同储物柜:餐具柜、调料架、冰柜……每个柜子只放一类东西。代码里,一个 .py 文件就是一个模块,你可以把相关的函数、类、变量放在里面。好处一目了然:

  • 复用:同一份代码,在多个地方 import 就能用。
  • 命名空间隔离:A 模块的 sum 函数和 B 模块的 sum 函数不会打架。
  • 易维护:改一个功能只需找到对应的 .py 文件,不用在几万行代码里大海捞针。

速查表

概念说明
模块(module)一个以 .py 结尾的文件;把一组相关的函数/类/变量放在一起,方便复用与维护。
模块名文件名去掉 .py,例如 tools.pytools
导入(import)在使用模块中的功能前必须先导入;导入后通过“模块名/别名.功能名”或直接“功能名”调用。
all模块级变量:指定 from 模块名 import * 时,允许被导入的名称列表。
包(package)本质是文件夹,里面包含多个模块(.py);通常包含 __init__.py,用于组织管理模块(包本身也可被当作模块导入)。

定义

一个以 .py 结尾的文件,就是一个模块。

比如你创建一个 tools.py,里面写:

python
# tools.py
def add(a, b):
    return a + b

PI = 3.14159

这个 tools.py 就是一个叫做 tools 的模块。模块名就是文件名去掉了 .py

⚠️ 命名规则:模块名应该用小写字母,可加下划线,不能以数字开头,也不要用 Python 关键字。虽然中文也能运行,但强烈不推荐。

模块的导入方式

  • 在使用模块中提供的功能之前,必须得先导入,再使用。
  • 导入模块的具体语法如下:
导入形式代码样例调用方式(说明)调用方式(示例)
import 模块名import random, os模块名.功能名random.randint(10, 100)
import 模块名 as 别名import random as rd别名.功能名rd.randint(10, 100)
from 模块名 import 功能名from random import randint,choice功能名randint(10, 100)
from 模块名 import 功能名 as 别名from random import randint as rint别名rint(10, 100)
from 模块名 import *from random import *功能名randint(10, 100)

自定义模块

当开发一些复杂的项目,为了让项目结构更清晰,更便于项目的维护管理 及 代码的复用,可能会把一个项目拆分若干个模块

_ _ all _ _

_ _all _ _是一个模块级别的特殊变量,用于指定from 模块名 import * 时会导入哪些功能

  • 包: 本质就是一个文件夹,该文件夹中可以包含若干python模块(.py文件),文件夹下还包含了一个_ *init _ _.py。* _ _*init* _是一个特殊文件。只要目录下存在这个文件,Python 就视其为常规包(即使文件为空)。
  • 作用:模块文件较多时,用来管理多个模块。(包的本质也是一个模块)

包的导入方式

注意: 在通过’from 包名 import *’ 导入全部模块的时候,需要在_ _ init _ _ .py 文件中添’_ _ all _ _ =[]’,控制允许导入的模块列表