Python:args的一些函数 - >*args(类似于functools中的那些)

Alb*_*ert 2 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))))
Run Code Online (Sandbox Code Playgroud)

那些没有用,因为add(和mul)被称为add((x,y)),即它只获得一个参数.

有什么功能基本上可以做到以下几点?

def funccaller_with_exposed_args(func):
    return lambda args: func(*args)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这可能是矫枉过正和过度设计,但总的来说,如果您能够在纯C代码中完成一个完整的重循环,这可能是非常重要的性能.

unu*_*tbu 5

您可以使用itertools.starmapitertools.imap执行此操作. 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)))
Run Code Online (Sandbox Code Playgroud)