gpt4 book ai didi

python - 接受元组的函数是否有语法糖?

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:37 24 4
gpt4 key购买 nike

假设我有一个函数接受两个参数并对它们执行一些计算:

def add(a, b):
return a + b

我想通过一个只能处理带有单个参数的函数的多处理库来调用这个函数。因此,我更改函数以将其参数作为单个元组:

def add2(ab):
a, b = ab
return a + b

但是,这对我来说似乎很笨拙。这些变量基本上需要定义(和记录)两次。如果我使用的是 lambda 函数,我只需编写以下内容,它就会正确地接受元组:

add3 = lambda (a, b): a + b

不幸的是,我的函数不够简单,无法作为 lambda 函数来实现。 python 中是否有任何语法糖功能允许我编写一个接受元组但将该元组的每个组件视为单独的命名参数的命名函数?我尝试为此寻找解决方案的尝试主要是找到了对 *args 运算符的引用,但这不适用于此处,因为我不控制调用该函数的站点。

这是一个函数调用的例子。请注意,它是通过多处理库调用的,因此我不能传递多个参数:

import multiprocessing
pool = multiprocessing.Pool(processes=4)
for result in pool.imap_unordered(add, [(1,2),(3,4)]):
print(result)

欢迎回答 python 2.7 或 3.x。

最佳答案

最好不要改变原来的函数接口(interface),使其不那么Pythonic。 在 Python 2 中,编写一个包装函数以与多处理一起使用。

def _add(args):
return add(*args)

在 Python 3 中,只需使用 Pool.starmap 即可:

>>> def add(a, b):
... return a + b
...
>>> p = Pool()
>>> list(p.starmap(add, [(1, 2), ('hello', ' world')]))
[3, 'hello world']

关于python - 接受元组的函数是否有语法糖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48234499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com