在python中实现只含位置参数和关键字参数函数的完全柯里化

    科技2022-08-11  113


    柯里化(Currying):

    将      多参数函数         转化成      [返回值是(单参函数或非函数类型对象)的]  单参函数

    柯里化在python中主要用于装饰器,完全的柯里化是没有必要的(下述CuR2用的多),这里只是个人练习成果记录。

    题目:

    已知:原函数SrcFunction(记作fn),其实参传入方式为(*iterable,*dict),且fn.__code__.co_argcount为大于0的整数n。

    fn.__code.__.co_argcount

    目标:实现一种可复用的方式,能够由fn生成一个柯里化函数DestFunction(目标函数)

    实现方法(个人的):

    def CuR2(fn):#可以将2个参数的函数柯里化 def inner1(*args): def inner2(arg): return fn(*arg,arg) return inner2 return inner1 def CuR(fn,co_args=None): if co_args is None: co_args = fn.__code__.co_argcount if co_args == 1: return fn @CuR2#等价于 inner = CuR2(inner) def inner(*in_args): return fn(*in_args) return CuR(inner,co_args-1) ''' #使用方法1,函数调用 DestFunction = CuR(SrcFunction) #使用方法2,装饰器 @CuR def SrcFunction(...): ... '''

    总结

    图一乐

     

    Processed: 0.033, SQL: 8