使用带有关键字参数的map()函数

Cam*_*arr 34 python arguments map-function

这是我尝试使用该map函数的循环:

volume_ids = [1,2,3,4,5]
ip = '172.12.13.122'
for volume_id in volume_ids:
    my_function(volume_id, ip=ip)
Run Code Online (Sandbox Code Playgroud)

有没有办法可以做到这一点?如果它不是ip参数,那将是微不足道的,但我不知道如何处理它.

Mar*_*ers 70

用途functools.partial():

from functools import partial

mapfunc = partial(my_function, ip=ip)
map(mapfunc, volume_ids)
Run Code Online (Sandbox Code Playgroud)

partial() 创建一个新的可调用对象,除了传递给新的可调用对象之外,它还将任何参数(包括关键字参数)应用于包装函数.


Jas*_*ske 12

这是一种lambda方法(不是更好,只是不同)

volume_ids = [1,2,3,4,5]
ip = '172.12.13.122'
map(lambda ids: my_function(ids, ip), volume_ids);
Run Code Online (Sandbox Code Playgroud)

  • partials更快,lambdas支持乱序参数 (4认同)

sha*_*apr 6

这可以通过列表理解轻松完成.

volume_ids = [1,2,3,4,5]
ip = '172.12.13.122'
results = [my_function(i,ip=ip) for i in volume_ids]
Run Code Online (Sandbox Code Playgroud)