模块和包

前言

模块和包帮助组织代码,提高可重用性。本章介绍如何创建和使用模块及包。

模块

模块是包含 Python 代码的文件。

创建模块

创建 mymodule.py

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

PI = 3.14159

class Calculator:
    def add(self, a, b):
        return a + b

导入模块

# 方式1: import 模块名
import mymodule

print(mymodule.greet("Alice"))  # Hello, Alice!
print(mymodule.PI)              # 3.14159
calc = mymodule.Calculator()
print(calc.add(5, 3))           # 8

# 方式2: from 模块名 import 特定内容
from mymodule import greet, PI

print(greet("Bob"))  # Hello, Bob!
print(PI)            # 3.14159

# 方式3: import 模块名 as 别名
import mymodule as mm

print(mm.greet("Charlie"))

# 方式4: from 模块名 import * (不推荐)
from mymodule import *
print(greet("David"))

包是包含多个模块的目录,必须包含 __init__.py 文件。

创建包结构

mypackage/
├── __init__.py
├── module1.py
├── module2.py
└── subpackage/
    ├── __init__.py
    └── submodule.py

init.py 文件

# mypackage/__init__.py
from .module1 import function1
from .module2 import Class2

__version__ = "1.0.0"

使用包

# 导入包中的模块
from mypackage import module1
module1.function1()

# 导入包中的特定函数
from mypackage.module1 import function1
function1()

# 导入子包
from mypackage.subpackage import submodule

标准库模块

Python 内置了许多有用的模块。

math 模块

import math

print(math.sqrt(16))    # 4.0
print(math.pi)          # 3.141592653589793
print(math.sin(math.pi/2))  # 1.0
print(math.ceil(3.2))   # 4
print(math.floor(3.8))  # 3

datetime 模块

from datetime import datetime, date, time

# 当前日期和时间
now = datetime.now()
print(now)  # 2023-05-05 14:30:00.123456

# 创建日期对象
d = date(2023, 5, 5)
print(d)  # 2023-05-05

# 格式化日期
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted)  # 2023-05-05 14:30:00

# 解析日期字符串
parsed = datetime.strptime("2023-05-05", "%Y-%m-%d")
print(parsed)  # 2023-05-05 00:00:00

random 模块

import random

# 随机整数
print(random.randint(1, 10))  # 1 到 10 之间的随机整数

# 随机浮点数
print(random.random())  # 0.0 到 1.0 之间的随机浮点数

# 从序列中随机选择
fruits = ["apple", "banana", "cherry"]
print(random.choice(fruits))  # 随机选择一个

# 打乱序列
random.shuffle(fruits)
print(fruits)  # 打乱后的列表

# 随机样本
print(random.sample(fruits, 2))  # 从列表中随机选择 2 个

os 模块

import os

# 获取当前工作目录
print(os.getcwd())

# 列出目录内容
print(os.listdir("."))

# 创建目录
os.makedirs("new_folder", exist_ok=True)

# 检查路径是否存在
print(os.path.exists("new_folder"))

# 路径操作
path = os.path.join("folder", "file.txt")
print(path)

第三方模块

使用 pip 安装:

pip install requests

使用:

import requests

response = requests.get("https://api.github.com/user", auth=("user", "pass"))
print(response.status_code)
print(response.json())

创建自己的模块

模块搜索路径

import sys
print(sys.path)  # Python 搜索模块的路径列表

if name == "main"

# mymodule.py
def main():
    print("This is the main function")

if __name__ == "__main__":
    main()

当直接运行模块时,__name__"__main__";当被导入时,为模块名。

本章小结

  • 模块是组织代码的基本单位
  • 包是模块的集合,需要 __init__.py
  • 掌握不同的导入方式
  • 熟悉常用标准库模块
  • 了解如何创建和分发自己的模块

练习题

  1. 创建一个包含数学函数的模块,并导入使用。
  2. 组织代码为一个包结构,包含多个模块。
  3. 使用 datetime 模块创建一个简单的日历应用。
  4. 编写一个脚本,使用 random 模块生成随机密码。

课程总结

  • Python 基础语法和数据类型
  • 控制流和函数
  • 数据结构和面向对象编程
  • 文件操作和异常处理
  • 模块和包的使用
posted on 2026-05-05 22:08  小樊童鞋  阅读(2)  评论(0)    收藏  举报