是否可以在文档字符串中包含常量的值?

for*_*818 3 python docstring python-2.7

我想这样做:

FOO_CONSTANT = 1

def foo():
  """asdf """ + str(FOO_CONSTANT)

print(foo.__doc__)
Run Code Online (Sandbox Code Playgroud)

哪个应该打印:

asdf 1
Run Code Online (Sandbox Code Playgroud)

但相反它打印

None
Run Code Online (Sandbox Code Playgroud)

我可以获得预期的输出

FOO_CONSTANT = 1

def foo():
  """asdf """

foo.__doc__ += str(FOO_CONSTANT)
print(foo.__doc__)
Run Code Online (Sandbox Code Playgroud)

但是将文档字符串分散到代码中感觉很糟糕。

是否可以在文档字符串中包含常量的值?

PS:我发现是远程相关的。尝试的方法也不会生成有效的文档字符串,请注意,它是关于生成动态文档字符串,而 myFOO_CONSTANT预计不会更改。我只是想避免重复自己。该名称FOO_CONSTANT对于文档字符串的读者来说没有任何意义,但该值却具有意义,并且它出现在几个我不想重复的文档字符串中。

Phi*_*ipp 6

我发现这是一个有趣的问题,并决定对其进行研究,但我自己无法想出一个不会传播文档字符串的答案,而这是您想要避免的。[1]

但在研究这个问题的过程中,我发现这些已经回答的问题我希望能够帮助您找到解决方案:

  1. 如何将变量放入 Python 文档字符串中
  2. python - 如何在文档字符串中包含变量?

[1]就像这样,您至少可以在文档字符串中显示缺少一个值。

FOO_CONSTANT = 1

def foo():
  """docstring with {0} or {1} replacements."""

foo.__doc__ = foo.__doc__.format(1, 2)    
print(foo.__doc__)   

> "docstring with 1 or 2 replacements". 
Run Code Online (Sandbox Code Playgroud)

  • @byxor 它永远不会失败。每个 Python 实例仅对模块的主体求值一次。无论导入它的模块有多少。 (3认同)
  • 执行 `foo.__doc__ = foo.__doc__.format` 时要小心,因为如果多次导入模块,它可能会失败。执行 `foo.__doc__ = "something".format` 更安全 (2认同)
  • @丹D。出色的。在这种情况下,请继续。我刚刚查了一下,这是真的。 (2认同)