目录
[1. 模块的基本概念](#1. 模块的基本概念)
[2. 导入模块的方式](#2. 导入模块的方式)
[2.1 基本导入](#2.1 基本导入)
[2.2 导入特定内容](#2.2 导入特定内容)
[2.3 导入所有内容](#2.3 导入所有内容)
[2.4 给模块或导入项起别名](#2.4 给模块或导入项起别名)
[3. 模块的搜索路径](#3. 模块的搜索路径)
[4. 标准库模块](#4. 标准库模块)
[5. 包(Package)](#5. 包(Package))
[6. __name__属性](#6. __name__属性)
[7. 模块重载](#7. 模块重载)
[8. 模块文档和帮助](#8. 模块文档和帮助)
[9. 创建可执行模块](#9. 创建可执行模块)
[10. 第三方模块的安装和使用](#10. 第三方模块的安装和使用)
[11. 模块的缓存](#11. 模块的缓存)
[12. 模块的最佳实践](#12. 模块的最佳实践)
1. 模块的基本概念
模块(Module):一个包含Python代码的.py文件,可以包含函数、类和变量的定义,以及可执行的代码。模块可以被其他程序导入使用,实现代码复用。
python
# 示例:创建一个名为my_module.py的模块
# my_module.py内容:
def greet(name):
"""打招呼的函数"""
print(f"Hello, {name}!")
version = "1.0"
2. 导入模块的方式
2.1 基本导入
python
# 导入整个模块
import my_module # 导入my_module.py
my_module.greet("Alice") # 使用模块中的函数
print(my_module.version) # 使用模块中的变量
2.2 导入特定内容
python
# 从模块导入特定函数/变量
from my_module import greet, version
greet("Bob") # 直接使用导入的函数
print(version) # 直接使用导入的变量
2.3 导入所有内容
python
# 导入模块中的所有内容(不推荐,可能导致命名冲突)
from my_module import *
greet("Charlie")
print(version)
2.4 给模块或导入项起别名
python
# 给模块起别名
import my_module as mm
mm.greet("David")
# 给导入项起别名
from my_module import greet as say_hello
say_hello("Eve")
3. 模块的搜索路径
Python解释器按照以下顺序搜索模块:
-
当前目录
-
PYTHONPATH环境变量指定的目录
-
Python安装目录的标准库
-
第三方库安装目录(site-packages)
python
# 查看模块搜索路径
import sys
print(sys.path) # 打印Python模块搜索路径
4. 标准库模块
Python自带的标准库提供了丰富的模块:
python
# 数学运算模块
import math
print(math.sqrt(16)) # 4.0
# 随机数模块
import random
print(random.randint(1, 10)) # 生成1-10的随机整数
# 日期时间模块
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 格式化输出当前时间
5. 包(Package)
包 :包含多个模块的目录,必须包含一个**__init__.py
**文件(可以为空),用于组织相关模块。
python
my_package/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
python
# 导入包中的模块
import my_package.module1
from my_package.subpackage import module3
# 从包中导入特定内容
from my_package.module2 import some_function
6. __name__
属性
每个模块都有一个__name__
属性:
-
当模块被直接运行时,__name__等于"main"
-
当模块被导入时,__name__等于模块名
python
# 在my_module.py中添加:
if __name__ == "__main__":
print("模块被直接运行")
else:
print("模块被导入")
7. 模块重载
默认情况下,模块只会在第一次导入时执行,可以使用importlib
重新加载模块:
python
import importlib
import my_module
# 修改my_module.py后...
importlib.reload(my_module) # 重新加载模块
8. 模块文档和帮助
python
# 查看模块文档字符串
print(math.__doc__)
# 使用help函数查看帮助
help(math.sqrt)
9. 创建可执行模块
python
# 在模块中添加可执行代码
def main():
print("这是模块的主程序")
if __name__ == "__main__":
main() # 当模块被直接运行时执行
10. 第三方模块的安装和使用
python
# 使用pip安装第三方模块
# 命令行执行: pip install requests
# 使用第三方模块
import requests
response = requests.get("https://www.example.com")
print(response.status_code) # 200
11. 模块的缓存
Python会缓存导入的模块,存储在__pycache__
目录中,以.pyc
为扩展名,提高后续导入速度。
12. 模块的最佳实践
-
模块命名应简短、全小写,必要时使用下划线
-
每个模块应有文档字符串说明其功能
-
避免循环导入
-
在模块中合理使用
if __name__ == "__main__":
-
将相关功能组织在同一个包中
如果您觉得本文章对您有帮助,别忘了点赞、收藏加关注,更多干货内容将持续发布,您的支持就是作者更新最大的动力。本专栏将持续更新,有任何问题都可以在评论区讨论