注释
写在代码里、只给人读、运行时会被跳过的说明;它记录意图与限制,而不是翻译每一行。
它是什么
注释 是 程序 文本里写给人看的句子。Python 里,从 # 到行末都会被解释器跳过。代码已经说明做了什么;好的注释说明意图和限制——为什么这样写、哪种输入不要送进来、哪一处选择不是显然的。
# 按标准形 ax+b=cx+d 求 x;分母为零时不应进入除法
print("开始求解") # 仅作运行可见的标记在 对话式编程 里,注释的地位并不下降。若人自己说不清意图,就无法判断语言模型起草的草稿是否跑题;能运行的文本,仍然需要一份可被阅读的理由。
名字从哪来
comment 的本义是「评注」。写在书页空白处的话不改变正文,却帮助下一个读者进入作者的思路。代码注释是同一类对象:它属于文本,不属于执行。
与此相关的还有「文档字符串」(docstring):放在 函数 或 类 开头的说明,有时可被工具提取。日常可靠、且解释器明确忽略的,仍是 # 这一条线。
它怎么工作
解释器读到 #,忽略到行末。字符串里面的 # 不会开启注释:print("# 标题") 仍会打印这些字符,因为此时它是数据,不是结构标记。
Python 没有单独的多行注释语法。连续多行 #,或偶尔用三重引号写成的字符串充当块说明,都是习惯而非另一种执行规则。真正被跳过的,仍是注释;被当成字符串求值的,仍会占用一次求值,哪怕结果没有被使用。
生活里在哪里
实验报告页边的备注、乐谱上的指法、地图图例,都不改变对象本身,却改变下一个使用者如何理解对象。工程图纸上的公差与适用范围,更接近好注释该做的事:标出这份设计在何种条件下成立。把每一根尺寸线再翻译成口语,并不能代替一张清楚的图纸。
和相近概念的差别
注释不是 print。print 的结果出现在输出区;注释根本不执行,使用者也看不见它,除非打开源文本。
命名清楚的 变量 和函数可以减少注释。名字已经在当前这一层说话时,不必再把同一句话写两遍。注释也不能代替 抽象:细节若仍摊在主流程里,读的人还是要同时消化所有步骤。
常见误会
误会 1:把每一行代码翻译成自然语言,就是好注释。
n = n + 1 # 把 n 加一 没有提供新信息。该写的是「为何在此处加一」或「n 的合法范围」。
误会 2:注释可以让某行「差不多算执行了」。
被注释掉的代码不会运行。要看效果,得取消注释,或另写一行真正执行的语句。
误会 3:有了生成工具,注释就可以省略。
草稿更容易在表面上能跑。没有意图说明,验收的人无法判断它是否在为问题建模。见 对话式编程。
想知道更多
- 书:埃里克·马瑟斯《Python编程:从入门到实践(第3版)》
- 书:艾伦·唐尼《像计算机科学家一样思考Python(第2版)》
- 书:布鲁克希尔《计算机科学概论》
未登录时不会保存学习进度