def curry(func):
"""
Return the curried version of a function.
"""
spec = inspect.getfullargspec(func)
if spec.varargs or spec.varkw or spec.kwonlyargs:
raise TypeError('cannot curry a variadic function')
def incomplete_factory(arity, used_args):
return lambda *args: (
func(*(used_args + args))
if len(used_args) + len(args) >= arity
else incomplete_factory(arity, used_args + args)
)
return incomplete_factory(len(spec.args), ())
评论列表
文章目录