标准库是 Python 内置的一组模块,提供了大量常用的功能和工具,可以帮助我们更快地开发应用程序,这些标准库模块是 Python 的核心组成部分,可以直接使用,通常存放在 Python 安装目录下的 lib
目录中。
模块查找路径
我们可以通过 sys
模块查看标准库路径:
import sys # 查看标准库路径 print(sys.prefix) # 输出: Python 安装路径 print(sys.exec_prefix) # 输出: Python 执行路径
sys.prefix
和 sys.exec_prefix
属性分别返回 Python 安装路径和执行路径,其中包含了标准库。这里我们导入的 sys
模块就是 Python 的标准库之一,之所以我们可以在代码中直接使用 sys
模块,这是因为这些标准库所在路径默认被包含在了 sys.path
中,这个路径是一个列表,包含了 Python 查找模块的路径。在导入模块时,Python 会按照 sys.path
中的路径顺序进行查找。
# libs.py import sys # 查看 sys.path for path in sys.path: print(path)
比如我们这里可以查看当前 Python 解释器的 sys.path
路径:
$ python3 libs.py /Users/cnych/Movies/pybase/lesson17 # 当前目录 /Library/Frameworks/Python.framework/Versions/3.12/lib/python312.zip /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12 /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/lib-dynload /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages
上面列表中的路径就是 Python 查找模块的路径,包括当前目录、Python 安装目录、第三方库目录等,我们通过 pip
安装的第三方库会被添加到 site-packages
目录中。现在知道为什么我们可以直接导入当前目录和标准库中的模块了吧?因为这些路径都被包含在了 sys.path
中,Python 会按照这些路径顺序进行查找。
如果我们本地开发的一些包或者模块想让其他项目,我们可以将这些包或模块的路径添加到 sys.path
中,这样就可以在其他项目中导入这些包或模块了。
假设有一个自定义模块 mymodule.py 放在 /path/to/your/modules
目录下:
# /path/to/your/modules/mymodule.py def hello(): return "Hello from mymodule!"
现在我们可以通过 sys.path.append()
方法将这个路径添加到 sys.path
中,使 Python 能够在该路径下查找模块。
import sys # 添加新的模块查找路径 new_path = '/path/to/your/modules' if new_path not in sys.path: sys.path.append(new_path) # 查看修改后的 sys.path for path in sys.path: print(path)
这样我们就可以在其他项目中导入并使用这个自定义模块了。
# main.py import sys # 导入自定义模块 import mymodule # 使用自定义模块 print(mymodule.hello()) # 输出: Hello from mymodule!
通过添加自定义模块路径到 sys.path
,可以在运行时动态导入并使用自定义模块。
常用标准库
标准库是 Python 随安装包一同提供的一系列模块,包含了许多常见任务的实现,比如文件操作、网络通信、数学运算等。使用标准库可以提高开发效率,避免重复造轮子。下面是一些常用的标准库模块:
os
:提供了与操作系统交互的功能,如文件和目录操作、环境变量等。sys
:提供了 Python 解释器的变量和函数,用于操作 Python 运行时环境。math
:提供了数学运算函数,如三角函数、对数函数、幂函数等。random
:提供了生成随机数的函数,如随机整数、随机选择等。datetime
:提供了日期和时间处理功能,如日期时间格式化、日期时间运算等。json
:提供了 JSON 数据编码和解码功能,用于处理 JSON 数据。re
:提供了正则表达式功能,用于处理字符串匹配和替换。urllib
:提供了 URL 处理功能,用于发送 HTTP 请求和处理 URL。logging
:提供了日志记录功能,用于记录应用程序运行日志。argparse
:提供了命令行参数解析功能,用于处理命令行参数。
下面我们通过实际示例来展示几个常用标准库模块的用法和功能。
math
模块
功能:提供基本的数学运算函数。
示例:
import math print(math.sqrt(16)) # 输出: 4.0 print(math.pi) # 输出: 3.141592653589793
解释:math
模块提供平方根计算、常数 π
等数学运算和常量。
datetime
模块
功能:处理日期和时间。
示例:
import datetime now = datetime.datetime.now() print(now) # 输出: 当前日期和时间 # 格式化日期时间 formatted = now.strftime("%Y-%m-%d %H:%M:%S") print(formatted) # 输出: 格式化后的日期时间
解释:datetime
模块提供获取当前日期时间、日期时间运算等功能。
os
模块
功能:与操作系统进行交互。
示例:
import os current_dir = os.getcwd() print(current_dir) # 输出: 当前工作目录 # ======== # 创建文件 with open('example.txt', 'w') as file: file.write('Hello, Python!') # 读取文件 with open('example.txt', 'r') as file: content = file.read() print(content)
解释:os
模块提供获取当前工作目录、文件操作等功能。
sys
模块
功能:访问和操作 Python 解释器。
示例:
import sys print(sys.version) # 输出: Python 版本信息
解释:sys
模块提供获取 Python 版本、系统路径等功能。
urllib
模块
功能:网络请求
示例:
import urllib.request response = urllib.request.urlopen('https://fastclass.cn') html = response.read() print(html[:200]) # 输出: 前200个字符
解释:使用 urllib
模块进行网络请求,获取网页内容。
json
模块
功能:处理 JSON 数据。
示例:
import json data = { 'name': 'Alice', 'age': 30 } # 将字典转换为 JSON 字符串 json_str = json.dumps(data) print(json_str) # 输出: JSON 字符串 # 将 JSON 字符串转换为字典 data = json.loads(json_str) print(data) # 输出: 字典
解释:json
模块提供 JSON 数据编码和解码功能。
Python 中内置了很多标准库模块,关于这些模块的详细用法和功能可以查看官方文档,这些标准库模块可以帮助我们更快地开发应用程序,提高开发效率。