跳转至

第八章:模块与包

导入模块

# 导入整个模块
import math
print(math.sqrt(16))

# 导入特定函数
from math import sqrt, pi
print(sqrt(16))
print(pi)

# 导入并重命名
import numpy as np
from math import sqrt as square_root

# 导入所有(不推荐)
from math import *

创建模块

# my_module.py
def greet(name):
    return f"Hello, {name}!"

PI = 3.14159

# 使用模块
import my_module
print(my_module.greet("Alice"))
print(my_module.PI)

包的结构

my_package/
├── __init__.py
├── module1.py
├── module2.py
└── subpackage/
    ├── __init__.py
    └── module3.py
# __init__.py
from .module1 import func1
from .module2 import func2

# 使用包
from my_package import func1, func2
from my_package.subpackage import module3

常用标准库

# os - 操作系统接口
import os
os.getcwd()           # 当前目录
os.listdir()          # 列出文件
os.makedirs('dir')    # 创建目录

# sys - 系统参数
import sys
sys.argv              # 命令行参数
sys.path              # 模块搜索路径

# datetime - 日期时间
from datetime import datetime, timedelta
now = datetime.now()
tomorrow = now + timedelta(days=1)

# json - JSON 处理
import json
data = json.dumps({'name': 'Alice'})
obj = json.loads(data)

# re - 正则表达式
import re
pattern = r'\d+'
matches = re.findall(pattern, 'abc123def456')

# collections - 集合工具
from collections import Counter, defaultdict
counter = Counter(['a', 'b', 'a', 'c', 'a'])

第三方库管理

# 安装
pip install requests
pip install numpy==1.21.0

# 卸载
pip uninstall requests

# 列出已安装
pip list
pip freeze > requirements.txt

# 从文件安装
pip install -r requirements.txt