代码之家  ›  专栏  ›  技术社区  ›  Albert

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

  •  2
  • Albert  · 技术社区  · 14 年前

    我有这些实现:

    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代码,那么这对于性能是非常重要的。

    1 回复  |  直到 14 年前
        1
  •  5
  •   unutbu    14 年前

    itertools.starmap itertools.imap imap starmap izip

    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)))