有没有理由在Python中将代码放在docstring之前?

有没有理由在Python中将代码放在docstring之前?,python,function,docstring,pep,Python,Function,Docstring,Pep,我在其他人的Python代码中看到,他们在函数的docstring之前粘贴了一些检查;大概是这样的: def func(args): if x_version != 1.7: return """docstring is here""" # function body code # ... 是否有任何情况下,您应该或必须在文档字符串之前放置一些代码来解决任何问题?是否有任何特殊情况需要引入这种样式,或者它总是一种糟糕的样式,因此必须固定到类似这样的东西上 def fun

我在其他人的Python代码中看到,他们在函数的docstring之前粘贴了一些检查;大概是这样的:

def func(args):
  if x_version != 1.7:
    return
  """docstring is here"""
  # function body code
  # ...
是否有任何情况下,您应该必须在文档字符串之前放置一些代码来解决任何问题?是否有任何特殊情况需要引入这种样式,或者它总是一种糟糕的样式,因此必须固定到类似这样的东西上

def func(args):
  """docstring is here"""
  if x_version != 1.7:
    return
  # function body code
  # ...

Python只会在docstring是函数体中的第一个
语句时拾取它。将代码放在前面意味着字符串完全被忽略:

>>> def func(args):
...   if x_version != 1.7:
...     return
...   """docstring is here"""
...
>>> func.__doc__ is None
True
如果您想让docstring实际产生任何效果,就不应该这样做

从:

函数体中第一条语句出现的字符串文字
被转换为函数的
\uuuu doc\uuu
属性,从而转换为函数的docstring


我用粗体强调。

没错。我使用了
inspect
模块来查看是否有没有没有没有docstring的函数,这就是我发现有移动docstring的函数的原因:)因此,当您必须将任何Python代码放在docstring之前时,您想不出任何特殊情况(请理解,在IDE等中,docstring将不适用于其他函数)?@AlexTereshenkov:粗心和“哦,我不知道”可能属于特殊情况。@AlexTereshenkov:没有理由这样做。认为这是个错误。太棒了,谢谢。在编辑其他人的代码之前想先检查一下,以免把事情弄糟。@AlexTereshenkov:有些人确实使用三重引号字符串来“注释”一段代码,因为如果不是第一条语句,CPython将完全忽略独立的字符串文字,但我通常建议人们使用普通注释(您的编辑器可以提供帮助)。