Python 中,注释不会影响程序的执行,但是会使代码更易于阅读和理解。
Python 中的注释有 单行注释 和 多行注释 。
单行注释
Python 中单行注释以 # 开头, # 符号后面的所有文本都被视为注释,不会被解释器执行。
实例
# 这是一个注释
print("Hello, World!")
# 这也是注释多行注释
在 Python 中,多行字符串(由三个单引号 ''' 或三个双引号 """ 包围的文本块)可以用作多行注释。
1、使用三个单引号
实例
#!/usr/bin/python3
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello, World!")2、使用三个双引号
实例
#!/usr/bin/python3
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("Hello, World!")注意 :虽然多行字符串在这里被当作多行注释使用,但它实际上是一个字符串,我们只要不使用它,它不会影响程序的运行。
这些字符串在代码中可以被放置在一些位置,而不引起实际的执行,从而达到注释的效果。
多行注释注意事项
在 Python 中,多行注释是由三个单引号 ''' 或三个双引号 """ 来定义的, 这种注释方式不能嵌套使用 。
当你开始一个多行注释块时,Python 会一直将后续的行都当作注释,直到遇到另一组三个单引号或三个双引号。
嵌套多行注释会导致语法错误:
实例(错误示例)
'''
这是外部的多行注释
可以包含一些描述性的内容
'''
这是尝试嵌套的多行注释
会导致语法错误
'''
'''在这个例子中,内部的三个单引号并没有被正确识别为多行注释的结束,而是被解释为普通的字符串,这将导致代码结构不正确。
正确做法:使用单行注释嵌套
实例(正确示例)
'''
这是外部的多行注释
可以包含一些描述性的内容
# 这是内部的单行注释
# 可以嵌套在多行注释中
'''Docstring 文档字符串
Python 的 Docstring(文档字符串)是一种特殊的注释,用于为函数、类、模块等添加文档说明。它类似于 Java 的 Javadoc,但更加强大和灵活。
与普通注释不同, Docstring 可以通过 __doc__ 属性直接访问 ,也可以使用 help() 函数查看。
基本语法
Docstring 使用三个双引号 """ 或三个单引号 ''' 包围,放在函数、类、模块的开头。
实例
def add(a, b):
"""返回两数之和"""
return a + b
# 通过 __doc__ 属性访问
print(add.__doc__) # 输出: 返回两数之和使用 help() 查看文档
实例
def add(a, b):
"""返回两数之和"""
return a + b
# 使用 help() 函数
help(add)运行结果预期:
Help on function add in module __main__:
add(a, b)
返回两数之和使用 inspect 模块提取文档
Python 的标准库提供了 inspect 模块,可以直接提取文档内容:
实例
import inspect
def add(a, b):
"""返回两数之和"""
return a + b
# 使用 inspect.getdoc() 获取文档
print(inspect.getdoc(add)) # 输出: 返回两数之和运行结果预期:
返回两数之和多行 Docstring
对于复杂的函数,可以使用多行 Docstring:
实例
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)运行结果预期:
Help on function calculate in module __main__:
calculate(a, b, operation='add')
执行数学运算
参数:
a: 第一个数字
b: 第二个数字
operation: 操作类型,可选 "add", "subtract", "multiply"
返回:
计算结果类的 Docstring
Docstring 也可以用于类:
实例
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 风格类似,但格式略有不同。
建议在项目中选择一种风格并保持一致。
相关
练习题
一、知识回顾(读完直接做下面的实践题)
- 注释不会影响程序执行,但能让代码更容易读懂;Python 里分单行注释和多行注释
- 单行注释以
#开头:#后面的所有文本都被当作注释,不会被解释器执行 - 多行注释用三个单引号
'''或三个双引号"""把文本包起来;它本质上是一个"没有被使用的多行字符串",所以不影响运行 - 多行注释不能嵌套:解释器遇到第一组三引号就认为注释已经结束,继续写下去会导致语法错误
- 想在多行注释内部再加说明,正确做法是用
#写单行注释(单行注释可以放在多行注释里面) - Docstring(文档字符串)是放在函数、类、模块开头的三个引号字符串,用来描述它的用途
- 读取 Docstring 的三种方式:
函数名.__doc__属性、help(函数名)函数、inspect.getdoc(函数名) - 多行 Docstring 的常见结构:第一行写功能说明,再用
参数:逐个说明参数、用返回:说明返回值 - 类和方法也都可以带 Docstring,分别用
类名.__doc__和类名.方法名.__doc__读取 - 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)- 写一个函数
