python – 将docstring设置为def中的表达式
作者:互联网
我想在def中设置func_doc(作为表达式).
def f():
'''My function help''' #Set the docstring
def g():
"My function " + "help" # An expression, so not read as a docstring
# can I put something here to set the docstring as an expression?
g.func_doc # is None
g.func_doc = "My function " + "help" # This works
这可能吗?
(我可以考虑这样做的两个原因:从模块导入函数(并且您也想导入文档字符串)并使用lexer.)
解决方法:
您不能这样做,因为只有字符串文字被识别为文档字符串.但是您可以使用装饰器来设置或修改函数的文档字符串. (您也可以在可执行代码中显式修改__doc__,但装饰器更清晰,因为它在逻辑上是声明的一部分).
这可能很有用,例如,如果您有多个函数应包含与其文档字符串(的一部分)相同的文本.这是一个小装饰器,它将其参数(文字或变量)附加到函数声明的docstring.
def docstring(docstr, sep="\n"):
"""
Decorator: Append to a function's docstring.
"""
def _decorator(func):
if func.__doc__ == None:
func.__doc__ = docstr
else:
func.__doc__ = sep.join([func.__doc__, docstr])
return func
return _decorator
它可以像这样使用:
@docstring("copyright by nobody")
def testme():
"This function does nothing"
pass
或者您可以直接执行它,修改现有函数(可能从另一个模块导入):
from re import sub
docstring("Copyright unknown")(sub)
标签:python,docstring 来源: https://codeday.me/bug/20190613/1231995.html