本文目录导读:

- 单行注释 (Single-line Comments)
- 多行注释 (Multi-line Comments)
- 文档字符串 (Docstrings) - 最推荐的方式
- 模块注释
- 类注释
- 常用的文档字符串格式
- 实战案例:完整的注释规范
- 注释规范最佳实践
- 生成文档的工具
在Python中编写规范注释非常重要,它能提高代码的可读性和可维护性,以下是几种常见的注释规范方式和最佳实践:
单行注释 (Single-line Comments)
# 这是单行注释,用于解释单行代码
x = 10 # 也可以在代码后面添加注释
# 通常用于简单的说明
def calculate_total():
# 初始化总和为0
total = 0
# 循环添加商品价格
for price in prices:
total += price
return total
多行注释 (Multi-line Comments)
# 方法1:使用多个单行注释 # 这是一个多行注释 # 用于解释复杂的逻辑 # 建议每行不要过长 # 方法2:使用三引号(通常用于文档字符串) """ 这也是多行注释的一种方式 通常用作文档字符串 """
文档字符串 (Docstrings) - 最推荐的方式
文档字符串是Python中最规范的注释方式,使用三引号 或 。
单行文档字符串
def add(a, b):
"""返回两个数的和"""
return a + b
多行文档字符串(PEP 257标准)
def calculate_bmi(weight, height):
"""
计算BMI指数
参数:
weight (float): 体重,单位公斤
height (float): 身高,单位米
返回:
float: BMI指数,保留两位小数
示例:
>>> calculate_bmi(70, 1.75)
22.86
"""
bmi = weight / (height ** 2)
return round(bmi, 2)
模块注释
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 计算器模块 提供基本的数学运算功能,包括加减乘除。 支持整数和浮点数运算。 作者: Zhang San 日期: 2024-01-15 版本: 1.0.0 """ # ... 模块代码
类注释
class BankAccount:
"""
银行账户类
管理用户的银行存款操作,包括存款、取款和查询余额。
属性:
account_holder (str): 账户持有人姓名
balance (float): 当前账户余额
方法:
deposit(amount): 存款
withdraw(amount): 取款
get_balance(): 获取余额
"""
def __init__(self, account_holder, initial_balance=0.0):
"""
初始化银行账户
参数:
account_holder (str): 账户持有人姓名
initial_balance (float): 初始余额,默认为0
"""
self.account_holder = account_holder
self.balance = initial_balance
def deposit(self, amount):
"""
存款操作
参数:
amount (float): 存款金额,必须大于0
返回:
float: 存款后的余额
异常:
ValueError: 当金额小于等于0时抛出
"""
if amount <= 0:
raise ValueError("存款金额必须大于0")
self.balance += amount
return self.balance
常用的文档字符串格式
Google风格(推荐)
def get_user_info(user_id):
"""
获取用户信息
Args:
user_id (int): 用户ID
Returns:
dict: 包含用户信息的字典,包括:
- name: 用户名
- email: 邮箱
- age: 年龄
Raises:
ValueError: 如果用户ID无效
ConnectionError: 如果数据库连接失败
"""
pass
NumPy/SciPy风格
def calculate_statistics(data):
"""
计算数据的统计信息
Parameters
----------
data : list or numpy.ndarray
输入数据,需要是数值类型
Returns
-------
dict
包含以下统计信息的字典:
- mean: 平均值
- median: 中位数
- std: 标准差
"""
pass
实战案例:完整的注释规范
#!/usr/bin/env python3
"""
学生成绩管理系统
本模块提供学生成绩的录入、查询和统计分析功能。
支持多种评分标准和成绩分布计算。
作者: Li Si
日期: 2024-01-20
版本: 1.0.1
"""
import statistics
from typing import List, Dict, Optional
class StudentGradeSystem:
"""
学生成绩管理系统类
管理学生的考试成绩,提供成绩分析和报告功能。
属性:
students (Dict[int, str]): 存储学生ID和姓名的字典
grades (Dict[int, List[float]]): 存储学生ID和成绩列表的字典
示例:
>>> system = StudentGradeSystem()
>>> system.add_student(1, "Alice")
>>> system.add_grade(1, 85.5)
>>> system.get_student_avg(1)
85.5
"""
def __init__(self):
"""初始化学生成绩管理系统"""
self.students: Dict[int, str] = {}
self.grades: Dict[int, List[float]] = {}
def add_student(self, student_id: int, name: str) -> bool:
"""
添加新学生
将新学生添加到系统中,如果学生ID已存在则返回False。
参数:
student_id (int): 学生唯一标识ID
name (str): 学生姓名
返回:
bool: 添加成功返回True,学生已存在返回False
示例:
>>> system = StudentGradeSystem()
>>> system.add_student(1, "Alice")
True
>>> system.add_student(1, "Bob") # ID重复
False
"""
if student_id in self.students:
return False
self.students[student_id] = name
self.grades[student_id] = []
return True
def add_grade(self, student_id: int, score: float) -> Optional[float]:
"""
添加学生成绩
为学生添加新的考试成绩,成绩必须在0-100之间。
参数:
student_id (int): 学生ID
score (float): 考试成绩(0-100)
返回:
Optional[float]: 添加成功返回平均分,失败返回None
异常:
ValueError: 当成绩不在0-100范围时抛出
"""
# 验证学生是否存在
if student_id not in self.students:
return None
# 验证成绩范围
if not 0 <= score <= 100:
raise ValueError("成绩必须在0-100之间")
# 添加成绩
self.grades[student_id].append(score)
# 返回平均分
return statistics.mean(self.grades[student_id])
def get_class_average(self) -> float:
"""
计算全班平均分
计算所有学生所有成绩的总平均分。
如果没有学生或成绩,返回0。
返回:
float: 全班平均分
"""
all_grades = []
for grade_list in self.grades.values():
all_grades.extend(grade_list)
if not all_grades:
return 0.0
return statistics.mean(all_grades)
# 使用示例
if __name__ == "__main__":
"""
主程序入口
演示StudentGradeSystem的基本使用方法
"""
system = StudentGradeSystem()
# 添加学生
system.add_student(1, "张三")
system.add_student(2, "李四")
# 添加成绩
system.add_grade(1, 85)
system.add_grade(1, 92)
system.add_grade(2, 78)
# 计算全班平均分
avg = system.get_class_average()
print(f"全班平均分: {avg:.2f}")
注释规范最佳实践
✅ 应该做的:
- 保持注释简洁清晰
- 使用文档字符串为公共API编写文档
- 注释"为什么这样做",而不是"做了什么"
- 及时更新注释,保持与代码一致
- 为复杂的算法添加注释说明
- 使用类型提示(Type Hints)提高可读性
❌ 避免做的:
# 不好的注释 - 解释显而易见的代码 x = x + 1 # 将x加1 # 多余的注释 a = 5 # 设置a为5 b = 10 # 设置b为10 # 过时的注释 # 这是旧版本的处理方式 # def old_function(): # pass
生成文档的工具
使用规范的文档字符串后,可以用工具自动生成文档:
# 使用pydoc查看文档 pydoc your_module.py # 使用Sphinx生成HTML文档 sphinx-quickstart
遵循这些规范,你的代码将更易于理解、维护和分享。好的注释应该是解释"为什么",而不是重复"是什么"。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播