【问题标题】:Is it possible to include the value of a constant in a docstring?是否可以在文档字符串中包含常量的值?
【发布时间】:2019-10-25 09:19:56
【问题描述】:

我想这样做:

FOO_CONSTANT = 1

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

print(foo.__doc__)

应该打印的内容:

asdf 1

但它会打印出来

None

我可以得到预期的输出

FOO_CONSTANT = 1

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

foo.__doc__ += str(FOO_CONSTANT)
print(foo.__doc__)

但是在代码中散布文档字符串感觉很糟糕。

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

PS:我找到了远程相关的this。那里尝试的方法也不会产生有效的文档字符串,并注意它是关于生成动态文档字符串,而我的 FOO_CONSTANT 预计不会改变。我只是想避免重复自己。名称FOO_CONSTANT 对文档字符串的读者来说没有任何意义,但值确实如此,并且它出现在我不想重复的几个文档字符串中。

【问题讨论】:

    标签: python python-2.7 docstring


    【解决方案1】:

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

    但在调查此问题时,我发现这些已经回答的问题希望能帮助您找到解决方案:

    1. How to put a variable into Python docstring
    2. python - how does one include a variable in the doc string?

    [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". 
    

    【讨论】:

    • 小心foo.__doc__ = foo.__doc__.format,因为如果模块被多次导入,它可能会失败。这样做更安全foo.__doc__ = "something".format
    • @byxor 它永远不会失败。每个 Python 实例只评估一次模块的主体。无论导入它的模块数量如何。
    • @DanD。优秀。在这种情况下,请继续。我刚刚检查过,这是真的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多