pin_drop当前位置:知识文库 ❯ 图文

Python注释

概述

注释是程序中不被解释器执行的说明性文字,用于对代码进行解释和说明。良好的注释习惯是编程素养的重要体现,它能帮助自己和他人更好地理解代码的意图和逻辑。Python支持单行注释、多行注释和文档字符串三种注释形式,本节将详细介绍它们的使用方法。


单行注释

单行注释以#开头,从#开始到行末的内容都是注释,不会被Python解释器执行。

基本用法

代码示例

# 这是第一个Python程序
print("Hello World")

行内注释

注释也可以放在代码的后面,与代码同行:

代码示例

x = 10  # 定义变量x,赋值为10
print(x)  # 输出x的值

单独占行的注释

代码示例

# 计算两个数的和
x = 10
y = 20
result = x + y
print(result)  # 输出结果:30

提示:单行注释#后面建议加一个空格,这是Python的编码规范(PEP 8)所推荐的。


多行注释

Python没有专门的多行注释语法,但可以使用连续的单行注释或三引号字符串来实现多行注释的效果。

方式一:连续单行注释

代码示例

# 这是一段多行注释
# 用连续的#来实现多行注释的效果
# 可以写很多行内容
print("程序开始执行")

方式二:三引号字符串

使用三个单引号'''或三个双引号"""包裹的内容,如果未被赋值给变量,就相当于多行注释:

代码示例

'''
这是一段多行注释
可以写很多行
用来详细说明代码的功能
'''
print("Hello World")

或者:

代码示例

"""
这也是多行注释
使用双引号同样可以
效果与单引号完全相同
"""
print("Hello World")

注意:严格来说,三引号形式并不是真正的注释,而是未赋值的字符串字面量。但它在效果上等同于多行注释,因此被广泛使用。


文档字符串

文档字符串(Docstring)是Python中一种特殊的注释形式,用于为模块、函数、类和方法编写说明文档。文档字符串使用三引号包裹,放在定义的第一行。

函数文档字符串

代码示例

def greet(name):
    """
    向指定的人打招呼

    参数:
        name (str): 要打招呼的人的名字

    返回:
        str: 问候语字符串
    """
    return f"Hello, {name}!"


print(greet("Alice"))

类文档字符串

代码示例

class Calculator:
    """一个简单的计算器类,支持基本的四则运算"""

    def add(self, a, b):
        """计算两个数的和"""
        return a + b

模块文档字符串

在Python文件的开头使用文档字符串,可以为整个模块编写说明:

代码示例

"""
math_tools.py - 数学工具模块

本模块提供常用的数学计算函数,包括:
- 加减乘除运算
- 幂运算
- 取模运算
"""

def power(base, exponent):
    """计算base的exponent次幂"""
    return base ** exponent

访问文档字符串

使用__doc__属性可以访问文档字符串:

代码示例

def greet(name):
    """向指定的人打招呼"""
    return f"Hello, {name}!"


print(greet.__doc__)

也可以使用help()函数查看文档字符串:

代码示例

help(greet)

注释最佳实践

对比项 好的注释 差的注释
注释内容 解释"为什么"这样做 解释代码"是什么"
更新频率 随代码同步更新 过时不更新
必要性 只注释复杂或不直观的逻辑 每行都加注释
代码可读性 注释是补充,代码本身清晰 依赖注释理解代码
数量 适量,不宜过多或过少 过多或没有

1. 解释"为什么"而非"是什么"

代码示例

# 好的注释:解释为什么这样计算
x = x * 1.08  # 价格上调8%

# 差的注释:重复代码做了什么
x = x * 1.08  # x乘以1.08

2. 保持注释与代码同步

注释应该随代码一起更新,过时的注释比没有注释更糟糕。

3. 避免无意义的注释

代码示例

# 差的注释:无意义的注释
i = i + 1  # i加1

# 好的做法:代码自解释,不需要注释
counter += 1

4. 使用TODO标记待办事项

代码示例

# TODO: 添加输入验证,处理空数据的情况
def process_data(data):
    # FIXME: 这个算法在大数据量时性能较差,需要优化
    pass

5. 复杂逻辑必须加注释

当代码逻辑复杂、不直观时,注释是帮助理解的关键。

6. 注释不宜过多

代码本身应该尽量清晰可读,注释是对代码的补充而非替代。如果代码需要大量注释才能理解,应考虑重构代码。


代码示例

示例1:带注释的简单计算程序

代码示例

# 计算圆的面积
radius = 5  # 圆的半径为5
pi = 3.14159  # 圆周率
area = pi * radius ** 2  # 面积公式:πr²
print(f"圆的面积为: {area}")

示例2:使用文档字符串的函数

代码示例

def calculate_bmi(weight, height):
    """
    计算BMI指数

    参数:
        weight: 体重(千克)
        height: 身高(米)

    返回:
        BMI指数(保留两位小数)
    """
    bmi = weight / (height ** 2)
    return round(bmi, 2)


bmi = calculate_bmi(70, 1.75)
print(f"你的BMI指数为: {bmi}")

示例3:多行注释说明程序功能

代码示例

'''
学生成绩管理程序
版本: 1.0
功能:
    1. 录入学生成绩
    2. 计算平均分
    3. 输出成绩报告
'''

student_name = "李明"
chinese = 92
math = 88
english = 95
average = (chinese + math + english) / 3
print(f"{student_name}的平均成绩为: {average:.1f}")

注意事项

提示:注释不是代码。注释的内容不会被Python解释器执行,仅用于人类阅读。

注意:三引号不是真正的注释。三引号形式本质上是字符串字面量,只是未被赋值时效果等同于注释。在函数或类定义的第一行使用时,会被当作文档字符串存储。

注意:避免嵌套三引号。使用三引号做注释时,内部不要出现相同类型的三引号,否则会导致语法错误。

提示:注释的编码。如果注释中包含中文,确保文件以UTF-8编码保存。

规范:PEP 8规范。单行注释的#后应加一个空格,行内注释与代码之间至少加两个空格。


小结

本节我们学习了:

  • 单行注释:使用#开头,适合简短说明

  • 多行注释:使用连续的#或三引号'''/""",适合大段说明

  • 文档字符串:使用三引号放在定义的首行,可通过__doc__help()访问

  • 注释最佳实践:解释原因而非结果,保持与代码同步,避免无意义注释

注释是代码可读性的重要保障,养成良好注释习惯将使你的代码更易于维护和协作。


练习题

练习1

为以下代码添加合适的注释,使其更容易理解:

代码示例

price = 199
discount = 0.85
final_price = price * discount
tax_rate = 0.13
total = final_price * (1 + tax_rate)
print(total)

练习2

编写一个函数,计算长方形的面积和周长,并为函数添加完整的文档字符串(包括功能说明、参数说明和返回值说明)。

常见问题

Python的单行注释用什么符号?

Python使用#符号表示单行注释。从#开始到行末的所有内容都是注释,不会被Python解释器执行。例如:# 这是一条注释。根据PEP 8规范,#后面应该加一个空格。

三引号是真正的注释吗?

不是的。三引号('''或""")本质上是字符串字面量,只是当它未被赋值给变量时,效果等同于注释。在函数或类定义的第一行使用时,它会被当作文档字符串(Docstring)存储,可以通过__doc__属性访问。

如何查看函数中文档字符串的内容?

有两种方式可以查看文档字符串:1)使用__doc__属性,例如print(func.__doc__);2)使用help()函数,例如help(func)。这两种方式都能显示函数定义中的文档字符串内容。

注释应该写"是什么"还是"为什么"?

好的注释应该解释"为什么"这样做,而不是"是什么"。例如x = x * 1.08应该注释"# 价格上调8%"而不是"# x乘以1.08"。因为代码本身已经说明了做了什么,注释应该说明背后的业务逻辑或原因。

注释越多越好吗?

不是的。代码本身应该尽量清晰可读,注释是对代码的补充而非替代。如果代码需要大量注释才能理解,应考虑重构代码让逻辑更清晰。注释不宜过多也不宜过少,应该适量且有意义。

小贴士

Python的注释规范遵循PEP 8编码规范:单行注释的#后加一个空格,行内注释与代码之间至少保留两个空格。另外,可以使用TODO和FIXME等特殊标记来标识待完成事项或需要修复的问题,大多数IDE和编辑器都能识别并高亮显示这些标记,方便开发者快速定位待办任务。

标签: Python注释 单行注释 多行注释 文档字符串 Docstring 代码规范 PEP 8 Python教程

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: 第一个Python程序 下一篇: Python缩进与代码块

poll相关推荐

作者头像 智能小晨 python

Python类型转换详解

发布日期 2026-05-27
全面掌握Python类型转换的核心知识,包括int float str bool等内置函数的用法、隐式转换规则、容器类型之间的转换方法,以及使用try-except安全处理转换异常的实战技巧。通过丰富的代码示例,帮助你写出更健壮的Python代码。
作者头像 智能小晨 python

Python字符串类型详解

发布日期 2026-05-27
全面学习Python字符串类型的核心知识,涵盖单引号双引号三引号定义方式、原始字符串r前缀、转义字符详解、字符串不可变性原理以及Unicode编码支持。
作者头像 智能小晨 python

Python布尔类型详解

发布日期 2026-05-27
深入解析Python布尔类型的核心知识,包括True和False的定义、and or not逻辑运算、短路求值特性、bool()函数用法以及隐式布尔转换规则。通过丰富的代码示例,帮助你掌握Python布尔类型的实际应用,写出更优雅的条件判断代码。
作者头像 智能小晨 python

Python复数类型complex详解

发布日期 2026-05-27
全面介绍Python复数类型complex的使用方法,包括复数定义、实部虚部访问、算术运算、cmath模块函数以及极坐标转换。掌握复数在科学计算和工程领域的应用。