python - 将 f(x) 转换为 f(*x) 的标准 Python 包装器?

标签 python functools

我不断遇到以下包装器的用例:

def asterisk(fn):
   def retfn(x):
      return fn(*x)
   return retfn

标准 Python 2 库中是否已经有这样做的东西?我查看了 functools,但找不到任何东西。

对于上下文,这是最近的一个用例:

print map(asterisk(operator.sub), [[-20, 20], [-20, 20], [32, 32]])

最佳答案

提供这个:

print map(asterisk(operator.sub), [[-20, 20], [-20, 20], [32, 32]])

你应该使用

from itertools import starmap
print starmap(operator.sub, [[-20, 20], [-20, 20], [32, 32]])

附言据我所知,Python 中没有针对此类功能的内置函数。前段时间,我在 Python 邮件列表中谈到缺少“应用”功能,这是更“一般”的问题。我认为,像 operator.apply(f, args) 这样的东西对很多情况都有好处。这种函数应用的函数表示也可以排除关于参数传递模型的参数。

关于python - 将 f(x) 转换为 f(*x) 的标准 Python 包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904374/

相关文章:

python - 无法从方法打开新窗口

python - 如何将 `lambda` 对象转换为 `function` 对象以在 Python 中进行酸洗?

python - 如何将参数传递给要传递给 itertools.groupby 的 keyfunc?

Python:functools,方法的包装装饰器:使 ipython 在使用 '?' 时返回正确的定义

python - 基于条件的 2 个大数据集的模糊 Wuzzy 字符串匹配 - python

python - 无法使用 Flask 和 Shapely 在 heroku 上运行应用程序

python - 使用 Pillow 批量创建 GIF 动画

python - 如何在两个数据框中查找匹配项

python - 为什么 'functools.reduce' 和 'itertools.chain.from_itertools' 在嵌套列表合并时有不同的计算时间

python - 用于在 python 中查找替换列表的 itertools 或 functools