Skip to content

Python 中,注释不会影响程序的执行,但是会使代码更易于阅读和理解。

Python 中的注释有 单行注释 和 多行注释 。


单行注释 ​

Python 中单行注释以 # 开头, # 符号后面的所有文本都被视为注释,不会被解释器执行。

实例 ​

python
# 这是一个注释
print("Hello, World!")
# 这也是注释

多行注释 ​

在 Python 中,多行字符串(由三个单引号 ''' 或三个双引号 """ 包围的文本块)可以用作多行注释。

1、使用三个单引号 ​

实例 ​

python
#!/usr/bin/python3

'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello, World!")

2、使用三个双引号 ​

实例 ​

python
#!/usr/bin/python3

"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("Hello, World!")

注意 :虽然多行字符串在这里被当作多行注释使用,但它实际上是一个字符串,我们只要不使用它,它不会影响程序的运行。

这些字符串在代码中可以被放置在一些位置,而不引起实际的执行,从而达到注释的效果。

多行注释注意事项 ​

在 Python 中,多行注释是由三个单引号 ''' 或三个双引号 """ 来定义的, 这种注释方式不能嵌套使用 。

当你开始一个多行注释块时,Python 会一直将后续的行都当作注释,直到遇到另一组三个单引号或三个双引号。

嵌套多行注释会导致语法错误:

实例(错误示例) ​

python
'''
这是外部的多行注释
可以包含一些描述性的内容

'''
这是尝试嵌套的多行注释
会导致语法错误
'''
'''

在这个例子中,内部的三个单引号并没有被正确识别为多行注释的结束,而是被解释为普通的字符串,这将导致代码结构不正确。

正确做法:使用单行注释嵌套

实例(正确示例) ​

python
'''
这是外部的多行注释
可以包含一些描述性的内容

# 这是内部的单行注释
# 可以嵌套在多行注释中
'''

Docstring 文档字符串 ​

Python 的 Docstring(文档字符串)是一种特殊的注释,用于为函数、类、模块等添加文档说明。它类似于 Java 的 Javadoc,但更加强大和灵活。

与普通注释不同, Docstring 可以通过 __doc__ 属性直接访问 ,也可以使用 help() 函数查看。

基本语法 ​

Docstring 使用三个双引号 """ 或三个单引号 ''' 包围,放在函数、类、模块的开头。

实例 ​

python
def add(a, b):
    """返回两数之和"""
    return a + b

# 通过 __doc__ 属性访问
print(add.__doc__)  # 输出: 返回两数之和

使用 help() 查看文档 ​

实例 ​

python
def add(a, b):
    """返回两数之和"""
    return a + b

# 使用 help() 函数
help(add)

运行结果预期:

Help on function add in module __main__:

add(a, b)
    返回两数之和

使用 inspect 模块提取文档 ​

Python 的标准库提供了 inspect 模块,可以直接提取文档内容:

实例 ​

python
import inspect

def add(a, b):
    """返回两数之和"""
    return a + b

# 使用 inspect.getdoc() 获取文档
print(inspect.getdoc(add))  # 输出: 返回两数之和

运行结果预期:

返回两数之和

多行 Docstring ​

对于复杂的函数,可以使用多行 Docstring:

实例 ​

python
def calculate(a, b, operation="add"):
    """
    执行数学运算

    参数:
        a: 第一个数字
        b: 第二个数字
        operation: 操作类型,可选 "add", "subtract", "multiply"

    返回:
        计算结果
    """
    if operation == "add":
        return a + b
    elif operation == "subtract":
        return a - b
    elif operation == "multiply":
        return a * b
    else:
        raise ValueError("不支持的操作")

# 查看完整文档
help(calculate)

运行结果预期:

yaml
Help on function calculate in module __main__:

calculate(a, b, operation='add')
    执行数学运算

    参数:
        a: 第一个数字
        b: 第二个数字
        operation: 操作类型,可选 "add", "subtract", "multiply"

    返回:
        计算结果

类的 Docstring ​

Docstring 也可以用于类:

实例 ​

python
class Person:
    """人物类,用于表示一个人的基本信息"""

    def __init__(self, name, age):
        """
        初始化人物对象

        参数:
            name: 姓名
            age: 年龄
        """
        self.name = name
        self.age = age

    def introduce(self):
        """介绍这个人"""
        return f"我叫{self.name},今年{self.age}岁"

# 访问类的文档
print(Person.__doc__)

# 访问方法的文档
print(Person.introduce.__doc__)

运行结果预期:

人物类,用于表示一个人的基本信息
介绍这个人

Docstring 规范 ​

Python 中有多种 Docstring 风格,常用的有:

  • Google 风格 :使用空格缩进,参数和返回值有明确的标签。
  • Sphinx/reST 风格 :使用冒号开头,如 :param name:。
  • NumPy 风格 :与 Google 风格类似,但格式略有不同。

建议在项目中选择一种风格并保持一致。


相关 ​

练习题 ​

一、知识回顾(读完直接做下面的实践题) ​

  1. 注释不会影响程序执行,但能让代码更容易读懂;Python 里分单行注释和多行注释
  2. 单行注释以 # 开头:# 后面的所有文本都被当作注释,不会被解释器执行
  3. 多行注释用三个单引号 ''' 或三个双引号 """ 把文本包起来;它本质上是一个"没有被使用的多行字符串",所以不影响运行
  4. 多行注释不能嵌套:解释器遇到第一组三引号就认为注释已经结束,继续写下去会导致语法错误
  5. 想在多行注释内部再加说明,正确做法是用 # 写单行注释(单行注释可以放在多行注释里面)
  6. Docstring(文档字符串)是放在函数、类、模块开头的三个引号字符串,用来描述它的用途
  7. 读取 Docstring 的三种方式:函数名.__doc__ 属性、help(函数名) 函数、inspect.getdoc(函数名)
  8. 多行 Docstring 的常见结构:第一行写功能说明,再用 参数: 逐个说明参数、用 返回: 说明返回值
  9. 类和方法也都可以带 Docstring,分别用 类名.__doc__ 和 类名.方法名.__doc__ 读取
  10. Docstring 的常见风格有 Google 风格、Sphinx/reST 风格(:param name:)、NumPy 风格;一个项目里选一种并保持一致

二、裸写题 ​

    • 在文件开头写一行注释说明程序功能
    • 中间输出一行 Hello
    • 在末尾再写一行注释

    批改(2026-09-28):⚠️ 只写了 1 行注释(题面要求首尾各 1 行),缺 print 之后的那行注释;print 输出的是 Hello Python,题面要求 Hello。

    - 提示(先自己想,实在想不出再点开)

    一级 · 思路:注释写在代码的上下两边,一行注释管一行;中间那行是正常的输出语句 二级 · 方法:注释写 # 注释内容;输出写 print("Hello")三级 · 骨架:# 这是我的第一个 Python ____ / print("____") / # 程序结束

    - 参考答案(做完再点开)

    python
    # 2-1
    # 这是我的第一个 Python 程序
    print("Hello")
    # 程序结束
    • 用 # 连写三行单行注释
    • 用 ''' 写一段多行注释
    • 用 """ 写一段多行注释

    批改(2026-09-28):⚠️ # 单行注释只写了 1 行(要求 3 行);''' 和 """ 两段多行注释写法正确,文件能正常运行、无报错。

    - 提示(先自己想,实在想不出再点开)

    一级 · 思路:三行单行注释就是连着三行以井号开头;两段多行注释分别用一对三个单引号、一对三个双引号把头尾包起来,中间随便写几行字 二级 · 方法:单行 # 内容;多行 ''' … ''' 或 """ … """三级 · 骨架:# 第一行注释 … 共三行 / ''' + 中间几行 + ''' / """ + 中间几行 + """

    - 参考答案(做完再点开)

    python
    # 2-2
    # 第一行注释
    # 第二行注释
    # 第三行注释
    
    '''
    这是多行注释
    用三个单引号
    '''
    
    """
    这是多行注释
    用三个双引号
    """
    
    print("注释练习完成")
    • 写一个函数 greet(name),返回 你好,<名字>!(结尾的叹号别漏)
    • 给这个函数加一段文档说明
    • 把函数里的文档内容读出来输出

    批改(2026-09-28):⚠️ Docstring 和 print(greet.__doc__) 都对(输出 返回你好);函数返回的是 你好,虾皮,少了题面要求的叹号,应写成 return f"你好,{name}!"。

    - 提示(先自己想,实在想不出再点开)

    一级 · 思路:函数体第一行放一段三个引号的说明文字,它就自动成了这个函数的文档;读取文档有一个现成的属性 二级 · 方法:def greet(name): + 第一行 """说明文字""";读取写 print(greet.__doc__)三级 · 骨架:def greet(____): / """返回____""" / print(greet.____)

    - 参考答案(做完再点开)

    python
    # 2-3
    def greet(name):
        """返回问候语"""
        return f"你好,{name}!"
    
    print(greet.__doc__)
    print(greet("小明"))
    • 写一段多行注释
    • 在这段多行注释内部用 # 写两行单行注释
    • 运行看看能不能正常通过

    - 提示(先自己想,实在想不出再点开)

    一级 · 思路:多行注释从第一组三引号开始、遇到下一组三引号就结束;中间那两行用井号写,不要再用三个引号 二级 · 方法:''' … ''' 里夹两行 # 说明;最后加一句 print("嵌套注释练习完成") 验证程序能跑 三级 · 骨架:''' / 这是外部的多行注释 / # 这是内部的单行注释 / # ____ / '''

    - 参考答案(做完再点开)

    python
    # 2-4
    '''
    这是外部的多行注释
    # 这是内部的单行注释
    # 可以嵌套在多行注释中
    '''
    print("嵌套注释练习完成")
    • 写一个函数 add(a, b),返回两数之和
    • 给它写一段详细的多行文档,把参数和返回值都说明白
    • 最后把这段文档显示出来(用能显示完整说明的那种方式)

    批改(2026-09-28):✅ 正确(help(add) 正常显示 add(a, b)、计算两数之和,参数与返回值说明齐全)。

    - 提示(先自己想,实在想不出再点开)

    一级 · 思路:函数体第一行放一段三个引号的多行说明,按"功能 → 参数 → 返回"的顺序分段写;显示文档用能打印完整格式的那个内置函数 二级 · 方法:多行 Docstring 写成 """ 功能说明 + 参数: 逐条 + 返回: + """;查看用 help(add)三级 · 骨架:def add(a, b): / ____(三个双引号开头) / 参数: 与 返回: 两段 / ____(add)

    - 参考答案(做完再点开)

    python
    # 2-5
    def add(a, b):
        """
        计算两数之和
    
        参数:
            a: 第一个数字
            b: 第二个数字
    
        返回:
            两数之和
        """
        return a + b
    
    help(add)