[英]Python: some function for args -> *args (similar like those in functools)
我有以下實現:
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代碼中,那么這對於性能而言是非常重要的。
您可以使用itertools.starmap或itertools.imap進行此操作。 imap
類似於starmap
只是它先starmap
參數。 因此,您可以只使用imap
來代替自己調用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)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.