使用地图功能评估函数时如何使用 kwarg 参数
How to use kwarg arguments when evaluating a function using map functionality
下面是一个 test
方法的示例,它使用 for 循环和 kwarg 参数进行评估。
def test(first_arg='_', second_arg='_'):
return 'first_arg: %s\t second_arg: %s' % (first_arg, second_arg)
strings = ['a', 'b', 'c', 'd', 'e']
for s in strings:
print(test(second_arg=s))
如何使用地图功能实现相同的结果?
也就是说,如何将 kwarg 传递给 map
函数?:
for i in map(test, strings):
print(i)
无法更改 test
函数中参数的顺序,并且传递所有参数是不可接受的。也就是说,不需要以下地图等效解决方案:
# Passing two arguments is not a desired solution.
for s in strings:
print(test(first_arg='_', second_arg=s))
或
# Editing the order of kwargs is also not possible.
def test(second_arg='_', first_arg='_'):
return 'first_arg: %s\t second_arg: %s' % (first_arg, second_arg)
for s in strings:
print(test(s))
您可以使用 lambda
创建一个新函数,该函数使用其唯一参数 x
:
和 second_arg=x
调用 test
()
for i in map(lambda x: test(second_arg=x), strings):
print(i)
输出:
first_arg: _ second_arg: a
first_arg: _ second_arg: b
first_arg: _ second_arg: c
first_arg: _ second_arg: d
first_arg: _ second_arg: e
与此相同:
for s in strings:
print(test(second_arg=s))
输出:
first_arg: _ second_arg: a
first_arg: _ second_arg: b
first_arg: _ second_arg: c
first_arg: _ second_arg: d
first_arg: _ second_arg: e
或者,您可以定义辅助函数。这相当于上面 lambda
的解决方案:
def call_with_second(x):
return test(second_arg=x)
for i in map(call_with_second, strings):
print(i)
输出:
first_arg: _ second_arg: a
first_arg: _ second_arg: b
first_arg: _ second_arg: c
first_arg: _ second_arg: d
first_arg: _ second_arg: e
下面是一个 test
方法的示例,它使用 for 循环和 kwarg 参数进行评估。
def test(first_arg='_', second_arg='_'):
return 'first_arg: %s\t second_arg: %s' % (first_arg, second_arg)
strings = ['a', 'b', 'c', 'd', 'e']
for s in strings:
print(test(second_arg=s))
如何使用地图功能实现相同的结果?
也就是说,如何将 kwarg 传递给 map
函数?:
for i in map(test, strings):
print(i)
无法更改 test
函数中参数的顺序,并且传递所有参数是不可接受的。也就是说,不需要以下地图等效解决方案:
# Passing two arguments is not a desired solution.
for s in strings:
print(test(first_arg='_', second_arg=s))
或
# Editing the order of kwargs is also not possible.
def test(second_arg='_', first_arg='_'):
return 'first_arg: %s\t second_arg: %s' % (first_arg, second_arg)
for s in strings:
print(test(s))
您可以使用 lambda
创建一个新函数,该函数使用其唯一参数 x
:
second_arg=x
调用 test
()
for i in map(lambda x: test(second_arg=x), strings):
print(i)
输出:
first_arg: _ second_arg: a
first_arg: _ second_arg: b
first_arg: _ second_arg: c
first_arg: _ second_arg: d
first_arg: _ second_arg: e
与此相同:
for s in strings:
print(test(second_arg=s))
输出:
first_arg: _ second_arg: a
first_arg: _ second_arg: b
first_arg: _ second_arg: c
first_arg: _ second_arg: d
first_arg: _ second_arg: e
或者,您可以定义辅助函数。这相当于上面 lambda
的解决方案:
def call_with_second(x):
return test(second_arg=x)
for i in map(call_with_second, strings):
print(i)
输出:
first_arg: _ second_arg: a
first_arg: _ second_arg: b
first_arg: _ second_arg: c
first_arg: _ second_arg: d
first_arg: _ second_arg: e