为什么Python用"""做多行注释时解释器会输出对应内容?
问题原因解答
核心本质:Python不存在三引号多行注释语法
Python官方定义的唯一注释语法只有以#开头的内容,所有#开头(且不在字符串内部)的内容都会被解释器完全忽略。
用"""或'''包裹的内容本质是多行字符串字面量,和普通的单/双引号字符串没有本质区别,唯一特性是支持直接写入换行符,不需要额外加\n转义。
为什么会有“三引号是多行注释”的说法?
如果这类无赋值的多行字符串没有被任何代码引用、也没有作为参数传入任何函数,那么在运行Python脚本文件时,它不会产生任何实际作用,看起来和被注释的效果一致,因此在开发者群体中逐渐形成了用它做临时多行注释的用法,官方的函数/类文档字符串(docstring)也是基于这个语法实现的。
交互式解释器输出的原因
Python交互式环境(REPL)的默认逻辑是:如果输入的表达式执行后返回值不为None,就会自动打印该返回值。你输入的三引号包裹内容本身就是一个独立的字符串表达式,返回值就是这个字符串本身,因此会被REPL直接打印输出。
如果是在.py脚本文件中单独写这段无引用的三引号字符串,运行时不会有任何输出,表现和注释一致。
开发建议
正式代码中如果是临时注释代码段,更推荐使用编辑器的批量注释功能统一添加#前缀,"""优先用于编写模块、类、函数的官方文档字符串,避免产生语法歧义。
内容的提问来源于stack exchange,提问作者Aryan Bansal
相关产品推荐
相关产品推荐

