编程语言
首页 > 编程语言> > python – 将docstring设置为def中的表达式

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