Python 中的模块


一、什么是模块

定义:

模块是 Python 程序的基本组织单元,是一个包含了函数、类、变量以及可执行代码的文件。

简单来说:

  • 一个 .py 文件 就是一个模块;
  • 模块是为了 代码复用逻辑分层结构清晰

二、模块的分类

类型 说明 示例
内置模块 Python 自带模块 math, os, sys, random, datetime
第三方模块 需安装的模块 numpy, pandas, requests, flask
自定义模块 用户自己编写的 .py 文件 mymodule.py

三、模块的导入方式

Python 提供多种导入语法

语法 用法
import module 导入整个模块
import module as m 给模块起别名
from module import func 导入指定函数或类
from module import * 导入所有(不推荐)

案例:导入并使用模块

import math

print(math.pi)         # 输出:3.141592653589793
print(math.sqrt(16))   # 输出:4.0

案例:导入指定函数

from math import sqrt, pow

print(sqrt(25))   # 输出:5.0
print(pow(2, 3))  # 输出:8.0

案例:模块别名

import numpy as np

arr = np.array([1, 2, 3])
print(arr)

内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回

四、自定义模块

你可以创建自己的模块文件,然后导入使用。

案例:自定义模块 mymath.py

文件:mymath.py

# 自定义数学模块

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

PI = 3.14159

文件:main.py

import mymath

print(mymath.add(3, 5))  # 输出 8
print(mymath.PI)         # 输出 3.14159

原理说明:

  • Python 导入模块时,会执行模块中的顶层代码;
  • 模块名就是文件名(不包含 .py);
  • 模块文件要与调用文件在同一目录下,或在 Python 搜索路径中。

五、模块搜索路径与 sys.path

Python 查找模块的顺序如下:

  1. 当前工作目录;
  2. 系统环境变量 PYTHONPATH
  3. Python 安装目录中的标准库路径。

可以用以下代码查看:

import sys
print(sys.path)

✅ 你可以临时添加一个路径:

sys.path.append("D:/myproject/libs")

六、模块属性 __name__

每个模块都有一个内置属性 __name__

  • 当模块被 直接运行 时:__name__ == "__main__"
  • 当模块被 导入运行 时:__name__ == 模块名

文件:demo.py

def greet():
    print("Hello, Python!")

if __name__ == "__main__":
    greet()
    print("我是直接运行的 demo 模块")
else:
    print("demo 模块被导入")

运行 python demo.py

Hello, Python!
我是直接运行的 demo 模块

被其他文件导入时:

demo 模块被导入

作用:
方便我们区分模块是独立执行还是被导入执行。


七、Python 常用标准模块


math —— 数学计算模块

import math

print(math.sqrt(9))      # 3.0
print(math.factorial(5)) # 120
print(math.ceil(3.2))    # 4
print(math.floor(3.8))   # 3

random —— 随机数模块

import random

print(random.randint(1, 10))        # 1~10 之间随机整数
print(random.choice(['A', 'B', 'C']))  # 随机选择
print(random.sample(range(100), 5))    # 随机取样
random.shuffle(mylist)                 # 随机打乱列表

os —— 操作系统模块

import os

print(os.getcwd())              # 当前工作目录
os.mkdir("testdir")             # 创建文件夹
os.rename("old.txt", "new.txt") # 重命名文件
os.remove("file.txt")           # 删除文件
print(os.listdir("."))          # 列出当前目录所有文件

sys —— 系统参数模块

import sys

print(sys.version)    # Python 版本
print(sys.platform)   # 操作系统
sys.exit()            # 退出程序

datetime —— 日期时间模块

import datetime

now = datetime.datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))

# 日期加减
delta = datetime.timedelta(days=7)
print(now + delta)

time —— 时间模块

import time

print(time.time())        # 当前时间戳
print(time.ctime())       # 格式化输出
time.sleep(2)             # 暂停 2 秒

json —— JSON 数据处理模块

import json

data = {"name": "Tom", "age": 22}
json_str = json.dumps(data)    # Python 对象 → JSON 字符串
print(json_str)

new_data = json.loads(json_str)  # JSON 字符串 → Python 对象
print(new_data["name"])

re —— 正则表达式模块

import re

text = "My phone: 138-0011-2233"
pattern = r"\d{3}-\d{4}-\d{4}"
result = re.findall(pattern, text)
print(result)  # ['138-0011-2233']

八、包与模块的区别

多个模块的集合

  • 包就是一个 带有 __init__.py 文件的文件夹
  • 用于组织模块,避免命名冲突。

案例结构:

myproject/
│
├── main.py
└── mypackage/
    ├── __init__.py
    ├── mathutils.py
    └── stringutils.py
mathutils.py
def add(a, b):
    return a + b
main.py
from mypackage import mathutils

print(mathutils.add(3, 4))  # 输出 7

说明:

  • __init__.py 可以为空;
  • 它告诉 Python:这个文件夹是一个包。

九、第三方模块的安装与使用

使用 pip 命令安装:

pip install requests

案例:requests 模块进行网页请求

import requests

url = "https://api.github.com"
response = requests.get(url)

print(response.status_code)
print(response.json())

十、模块开发

✅ 推荐结构

project/
│
├── main.py
├── utils/
│   ├── __init__.py
│   ├── file_utils.py
│   ├── math_utils.py
│   └── net_utils.py
└── config.py

✅ 命名规范

  • 模块名全小写;
  • 文件名避免与标准库重名;
  • 公共函数尽量写在模块中,方便复用。

✅ 文档与注释

  • 每个模块开头加文档字符串:
"""
math_utils.py
数学工具模块:提供常用的数学函数
"""

十一、总结表格

分类 示例 用途
内置模块 math, os, sys, time 系统操作、数学计算
标准库模块 re, json, datetime, collections 常规工具
第三方模块 numpy, pandas, flask, requests 数据科学、网络、Web
自定义模块 mymodule.py 自己封装的工具函数
mypackage 模块集合

python学习专栏导航
(1)100天python从入门到拿捏《Python 3简介》
(2)100天python从入门到拿捏《python应用前景》
(3)100天python从入门到拿捏《数据类型》
(4)100天python从入门到拿捏《运算符》
(5)100天python从入门到拿捏《流程控制语句》
(6)100天python从入门到拿捏《推导式》
(7)100天python从入门到拿捏《迭代器和生成器》
(8)100天python从入门到拿捏《函数和匿名函数》
(9)100天python从入门到拿捏《装饰器》
(10)100天python从入门到拿捏《Python中的数据结构与自定义数据结构》

Logo

分享最新、最前沿的AI大模型技术,吸纳国内前几批AI大模型开发者

更多推荐