(11)100天python从入门到拿捏《模块》
·
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 查找模块的顺序如下:
- 当前工作目录;
- 系统环境变量
PYTHONPATH; - 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中的数据结构与自定义数据结构》
更多推荐
所有评论(0)