Python:args的一些函数->*参数(类似于functools中的参数)
我有以下实现:Python:args的一些函数->*参数(类似于functools中的参数),python,functional-programming,Python,Functional Programming,我有以下实现: def vecAdd(v1, v2): return tuple(map(add, izip(v1,v2))) def vecMul(v1, f): return tuple(map(mul, izip(v1,repeat(f)))) 这些都不起作用,因为add(和mul)的调用类似于add((x,y)),也就是说,它只得到一个参数 是否有一些功能基本上实现以下功能 def funccaller_with_exposed_args(func): return lambd
def vecAdd(v1, v2): return tuple(map(add, izip(v1,v2)))
def vecMul(v1, f): return tuple(map(mul, izip(v1,repeat(f))))
这些都不起作用,因为add
(和mul
)的调用类似于add((x,y))
,也就是说,它只得到一个参数
是否有一些功能基本上实现以下功能
def funccaller_with_exposed_args(func):
return lambda args: func(*args)
在这种情况下,这可能是一种过分的技巧和过度的工程设计,但一般来说,如果您能够将一个完整的重循环放到纯C代码中,这在性能方面是非常重要的。您可以使用或来实现这一点。
imap
与starmap
类似,只是它首先压缩参数。
因此,您不必自己调用izip
,只需使用imap
:
import itertools as it
def vecAdd(v1, v2): return tuple(it.imap(add, v1, v2))
def vecMul(v1, f): return tuple(it.imap(mul, v1, it.repeat(f)))