Python注释:#vs.字符串

Python注释:#vs.字符串,python,Python,关于在Python源代码中添加注释的“标准”方式: def func(): "Func doc" ... <code> 'TODO: fix this' #badFunc() ... <more code> def func(): "Func doc" ... <code> #TODO: fix this #badFunc() ... <more code> def

关于在Python源代码中添加注释的“标准”方式:

def func():
    "Func doc"
    ... <code>
    'TODO: fix this'
    #badFunc()
    ... <more code>

def func():
    "Func doc"
    ... <code>
    #TODO: fix this
    #badFunc()
    ... <more code>
def func():
“Func文件”
... <代码>
'待办事项:解决此问题'
#badFunc()
... 
def func():
“Func文件”
... <代码>
#TODO:解决这个问题
#badFunc()
... 
我更喜欢将一般性评论写成字符串,而不是前缀#。 官方的Python风格指南没有提到使用字符串作为注释(如果我在阅读时没有错过的话)

我喜欢这种方式,主要是因为我认为
#
字符带注释块看起来很难看。据我所知,这些字符串没有任何作用


这样做有缺点吗?

我认为定义(或类)中只有第一个字符串文字是“特殊的”,即解释器将其存储到定义对象(或类)中

在最坏的情况下,您在代码中放置的任何其他字符串文字将意味着解释器将在运行时构建字符串值,然后将其丢弃。这意味着,通过在代码中乱扔字符串常量来进行“注释”可能会降低性能成本


当然,我还没有对此进行基准测试,而且对Python解释器也不太了解,因此不能肯定地说。

当然,缺点是其他人阅读它时会发现代码字符串和注释字符串是交错的,这可能会造成混淆。

不要将字符串(无op语句)误用为注释。docstring,例如模块、类或函数中的第一个字符串,是特殊的,绝对推荐使用

请注意,文档字符串是文档,文档和注释是两件不同的事情

  • 文档对于理解代码的功能很重要
  • 注释解释了代码是如何实现的
文档由使用您的代码的人阅读,注释由希望理解您的代码的人阅读,例如维护代码的人

使用字符串进行注释有以下(潜在)缺点:

  • 这让那些不知道字符串没有任何作用的人感到困惑
  • 注释和字符串文字在代码编辑器中以不同的方式突出显示,因此您的样式可能会使代码更难阅读
  • 这可能会影响性能和/或内存使用(如果在字节码编译过程中不删除字符串,则删除注释是在扫描程序级别完成的,因此绝对更便宜)
对Python程序员来说最重要的是:它不是Python的:

应该有一种方法,最好只有一种显而易见的方法


坚持标准,使用注释。

作为记录,这看起来不会影响性能。查看dis.dis输出,或者在已编译模块上运行字符串,都不会显示任何字符串的痕迹,所以看起来它们在编译过程中得到了优化。(不过,其他理由已经足够了)