【发布时间】:2014-06-19 06:17:53
【问题描述】:
给定一个接受多个函数作为参数的高阶函数,该函数如何将关键字参数传递给函数参数?
例子
def eat(food='eggs', how_much=1):
print(food * how_much)
def parrot_is(state='dead'):
print("This parrot is %s." % state)
def skit(*lines, **kwargs):
for line in lines:
line(**kwargs)
skit(eat, parrot_is) # eggs \n This parrot is dead.
skit(eat, parrot_is, food='spam', how_much=50, state='an ex-parrot') # error
state 不是 eat 的关键字 arg 那么小品如何只传递与它正在调用的函数相关的关键字 args 呢?
【问题讨论】:
-
毫无疑问有办法做到这一点,但我认为你从错误的角度来解决这个问题。如果您的两个函数使用同名的关键字 arg,并且您想将不同的值传递给这两个函数,您会怎么做?最好只明确地传入关键字参数的字典。每个参数都可能是(比如说)一个由函数及其关键字 args 组成的二元组。
-
这可能是最好的解决方案。
标签: python function keyword-argument