前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

python 注释:单行#与多行"""/'''文档字符串



各位同学,今天咱们来聊聊 Python 里的 “代码说明书”—— 注释。咱先达成一个共识:代码是写给人看的,机器只是顺便能跑。就像你写日记不标日期,过俩月自己都忘了那天为啥 emo 一样,代码不加注释,过一周你可能会怀疑这是隔壁老王写的。

一、单行注释:# 号 —— 便利贴本贴

啥是单行注释?

用 # 开头的文字,Python 解释器会假装没看见。它的作用就像你在课本上画的波浪线、写的 “这里要考”—— 只给人看,不影响内容本身。

现实类比:

就像你在冰箱上贴的便利贴:“牛奶只剩半盒,下班买!” 冰箱(Python 解释器)不会因为这张纸就自己去买牛奶,但你(程序员)看到就知道该干啥了。

怎么用?看案例:

python

运行

# 这是一行单独的注释,解释下面要干啥
age = 18  # 这是行内注释,解释这个变量存的是年龄

# 计算一年有多少天(忽略闰年,简单粗暴版)
days_in_year = 365
print(days_in_year)  # 输出结果:365

怎么运行?

  1. 打开记事本(或 PyCharm、VS Code 这些 IDE),复制上面的代码
  2. 保存为 single_line_comment.py(注意后缀必须是 .py)
  3. 打开命令提示符(Windows)或终端(Mac/Linux),输入:python single_line_comment.py
  4. 你会看到输出 365,而所有 # 后面的文字都被无视了 —— 这就是注释的精髓!

二、多行文档字符串:""" 或 ''' —— 产品说明书

啥是文档字符串?

用三个双引号 """ 或三个单引号 ''' 包裹的文字。它比单行注释 “高级”:不仅能当注释,还能被 Python “记住”,可以通过代码调用出来(比如生成文档、显示帮助信息)。

现实类比:

如果单行注释是便利贴,那文档字符串就是 产品说明书。比如你买个微波炉,便利贴可能写 “热饭按 10 分钟”,但说明书会详细写 “功率多少、怎么解冻、不能加热金属容器”—— 更系统、更规范。

文档字符串给谁用?

  • 写代码的自己(过仨月忘了功能时救急)
  • 用你代码的同事(不用追着你问 “这函数咋用啊”)
  • 自动文档工具(比如 Sphinx,能把文档字符串转成 HTML 手册)

怎么用?看案例(多到让你过瘾)

案例 1:模块级文档字符串(整个.py 文件的说明)

python

运行

"""
模块名称:calculator.py
功能:提供简单的加减乘除运算
作者:编程大师(就是我)
版本:1.0

使用方法:
导入后直接调用函数,例如:
>>> add(2, 3)
5
"""

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

案例 2:函数文档字符串(最常用!)

python

运行

def divide(a, b):
    """
    功能:计算两个数的除法
    
    参数:
        a (int/float):被除数,不能是字符串哦
        b (int/float):除数,绝对不能为0!(不然给你抛异常)
    
    返回值:
        float:a除以b的结果
    
    异常:
        ZeroDivisionError:当b为0时触发
        TypeError:当a或b不是数字时触发
    
    示例:
        >>> divide(10, 2)
        5.0
        >>> divide(7, 3)
        2.3333333333333335
    """
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("被除数和除数必须是数字!")
    if b == 0:
        raise ZeroDivisionError("除数不能为0!想上天吗?")
    return a / b

# 试试调用文档字符串
print("函数说明:", divide.__doc__)  # __doc__是Python自带的属性,专门存文档字符串
print("用help看更清楚:")
help(divide)  # help()函数会格式化显示文档字符串

案例 3:类和方法的文档字符串

python

运行

class Dog:
    """
    类:Dog(狗)
    功能:模拟一只狗的基本行为
    
    属性:
        name (str):狗的名字
        age (int):狗的年龄(以岁为单位)
    """
    def __init__(self, name, age):
        """
        初始化Dog实例
        
        参数:
            name (str):给狗起个名字,比如"旺财"
            age (int):狗的年龄,必须是正数(总不能是-3岁吧)
        """
        self.name = name
        self.age = age
        
    def bark(self):
        """
        狗叫一声
        
        返回值:
            str:"汪汪!我叫[名字],今年[年龄]岁啦!"
        """
        return f"汪汪!我叫{self.name},今年{self.age}岁啦!"

# 测试一下
my_dog = Dog("旺财", 3)
print(my_dog.bark())  # 输出:汪汪!我叫旺财,今年3岁啦!
print("Dog类的说明:", Dog.__doc__)  # 查看类文档
print("bark方法的说明:", Dog.bark.__doc__)  # 查看方法文档

怎么运行这些案例?

  1. 把代码复制到记事本,保存为 docstring_demo.py
  2. 命令行输入 python docstring_demo.py
  3. 你会看到文档字符串被打印出来,help() 函数还会把格式整理得清清楚楚 —— 这就是文档字符串的 “魔法”!

三、单行# 和 多行 """ 的核心区别(划重点!)

特性

单行注释(#)

文档字符串(""" 或 ''')

被 Python 识别

完全无视(纯给人看)

会被存在__doc__属性里(机器也能用)

用途

临时说明、标注代码细节

系统说明(模块 / 函数 / 类的功能、参数等)

长度

一般一行(换行要重新加 #)

可跨多行(不用重复加符号)

适用场景

代码里的 “碎碎念”

给别人用的 “使用手册”

四、灵魂拷问:啥时候用哪种注释?

  • 如果你只是想写 “这里我用了个小技巧”“这个变量存的是用户 ID”—— 用 # 单行注释,简单粗暴。
  • 如果你写了个函数 / 类,希望别人(包括未来的自己)知道 “这玩意是干啥的、怎么用、有啥坑”—— 必须用 """ 文档字符串,显得专业且贴心。



最后吐槽一句:别信 “好代码不需要注释” 这种鬼话。再牛的代码,过半年你自己看也得骂一句 “这谁写的啥玩意儿”。所以,注释该写就得写,就像炒菜要放盐 —— 适量就好,多了齁得慌,少了没味道。



赶紧打开你的 Python 文件,给代码加几句 “说明书” 吧!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言