Python评论:#与字符串

big*_*hus 24 python

关于在Python源代码中放置注释的"标准"方法:

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

def func():
    "Func doc"
    ... <code>
    #TODO: fix this
    #badFunc()
    ... <more code>
Run Code Online (Sandbox Code Playgroud)

我更喜欢将一般注释写为字符串而不是前缀#的.官方的Python风格指南没有提到使用字符串作为注释(如果我在阅读时没有错过它).

我喜欢这种方式主要是因为我认为这个#角色看起来很丑陋.据我所知,这些字符串不做任何事情.

这样做有缺点吗?

Fer*_*yer 62

不要滥用字符串(无操作语句)作为注释.Docstrings,例如模块,类或函数中的第一个字符串,是特殊的,绝对值得推荐.

请注意,docstrings是文档,文档和注释是两回事!

  • 文档重要的是要了解什么代码的功能.
  • 注释解释了代码是如何做到的.

文档由使用您的代码的人阅读,想要理解您的代码的人的评论,例如为了维护它.

使用字符串进行评论具有以下(潜在)缺点:

  • 它让那些不知道字符串什么也不做的人感到困惑.
  • 注释和字符串文字在代码编辑器中的突出显示方式不同,因此您的样式可能会使您的代码难以阅读.
  • 它可能会影响性能和/或内存使用(如果在字节码编译期间未删除字符串,则在扫描程序级别上删除注释,以便最终降低成本)

对于Python程序员来说最重要的是:它不是pythonic:

应该有一个 - 最好只有一个 - 明显的方法来做到这一点.

坚持标准,使用评论.

  • 对于记录,它看起来不会影响性能.查看dis.dis输出,或在已编译模块上运行字符串不会显示字符串的跟踪,因此看起来它们在编译期间已被优化掉.(其他原因绰绰有余) (8认同)

Swa*_*C H 6

当然,缺点是读取它的其他人会发现代码字符串和注释字符串是交错的,这可能会令人困惑.


unw*_*ind 5

我认为只有定义(或类)中的第一个字符串文字是"特殊的",即由解释器存储到定义的对象(或类')文档字符串中.

你在代码中放置的任何其他字符串文字在最坏的情况下都意味着解释器将在运行时构建字符串值,然后将其丢弃.这意味着通过使用字符串常量乱丢代码来执行"注释"可能会降低性能.

当然,我没有对此进行基准测试,也不清楚Python解释器是否足够肯定.