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

标签 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 lambda args: func(*args)

在这种情况下,这可能是过度杀伤和过度设计的,但总的来说,如果您可以在纯 C 代码中布置一个完整的重型循环,那么这对于性能来说可能非常重要。

最佳答案

您可以使用itertools.starmap来做到这一点或itertools.imapimapstarmap 类似,只是它首先压缩参数。 因此,您可以只使用 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)))

关于Python:args -> *args 的一些函数(类似于 functools 中的函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4258992/

相关文章:

python - 在modelForm中访问request.user

python - 矩阵和向量之间的欧氏距离

swift - 函数式编程是否使用 "class methods"? OO -> 函数式思维

scala - 第一种使用 Scala 的方法

javascript - Church 编码的总和类型是无类型语言的合适替代方案吗?

python - 如何在 Django 中从 JSONField 添加/删除数据

python - LINUX 行尾

functional-programming - ETA扩展-名称来源

c++ - 为什么可以使用额外参数调用 Boost.Bind 函数?

python - 分块下载并提取 Python 中的 tar 文件