【发布时间】:2019-03-02 15:07:05
【问题描述】:
我想用 Python 写一个函数。给定一个函数,返回一个新函数,该函数向后运行带有参数的原始函数。
例如输入函数func是pow,所以func(2, 3) = 8。返回的新函数会做pow(3,2) = 9。
我在另一个post找到了这个解决方案
def flip(func):
'Create a new function from the original with the arguments reversed'
@wraps(func)
def newfunc(*args):
return func(*args[::-1])
return newfunc
没有@wrap,有没有办法做到这一点?参数的数量是未知的。它可以是任何类型:int、string。所以我想要的函数只需要一个参数,即原始函数的名称。
reverse_args(f)
调用时,*args 将跟随:
reverse_args(func)(*args)
【问题讨论】:
-
是的……别说了……
-
无论如何我都不会使用
@wraps。它将从原始文档中复制文档字符串,这在反转参数后可能不正确。
标签: python function decorator args