使用Python中原始docstring的部分函数应用程序?

2024-05-16 03:23:39 发布

您现在位置:Python中文网/ 问答频道 /正文

对于partial function application,我知道在Python中有几种方法可以做到这一点。但是,它们似乎没有保留原始函数的docstring。在

functools.partial为例:

from functools import partial

def foo(a, b, c=1):
    """Return (a+b)*c."""
    return (a+b)*c

bar10_p = partial(foo, b=10)
print bar10_p.__doc__

partial(func, *args, **keywords) - new function with partial application 
of the given arguments and keywords.

让我们试试fn.py

^{pr2}$

有没有Python包/模块提供部分应用程序的保留docstring?在

更新

正如@Kevin@Martijn Pieters所述,函数签名已更改,因此不建议坚持原始函数的docstring。我意识到我正在寻找一个更新的docstring,其中包含foo() with a default b value of 10(感谢Kevin简单而直接的示例)。在


Tags: of方法函数fromimportfooapplicationwith
3条回答

__doc__partial对象和函数上都是可写的;只需将其复制到:

bar10_p = partial(foo, b=10)
bar10_p.__doc__ = func.__doc__

或者使用^{} function为您进行复制;它还会为您复制其他一些元数据:

^{pr2}$

只需编写一个新的__doc__。在

bar10_p = partial(foo, b=10)
bar10_p.__doc__ = """foo() with a default b value of 10.

See foo().

"""

您的函数具有与原始函数不同的接口,因此它不应完全复制docstring。在

Partial可以访问原始函数func方法。所以通过原始函数,您可以访问原始函数docstring。在

试试这个:

from math import cos
from functools import partial

cos_partial = partial(cos, 0.5)
print(cos_partial.func.__doc__)

相关问题 更多 >