使用变量作为关键字参数分配的最Pythonic方式是什么?

17

如何使用最符合Python风格的方式解决以下问题?从交互式shell中开始:

>>> def f(a=False):
...     if a:
...         return 'a was True'
...     return 'a was False'
... 
>>> f(a=True)
'a was True'
>>> kw = 'a'
>>> val = True
>>> f(kw=val)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() got an unexpected keyword argument 'kw'

目前我正在使用以下方法解决它:

>>> exec 'result = f(%s=val)' % kw
>>> result
'a was True'

但它看起来相当笨拙...

(Python 2.7+或3.2+的解决方案都可以)

2个回答

44

7
在许多情况下,您可以直接使用。
f(kw)

当您在它们之前指定所有参数时,关键字参数不必作为关键字指定。
Python 3具有仅限关键字参数的语法,但默认情况下不是这样。
或者,基于@zeekay的答案构建,
kw = 'a'
f(**{kw: True})

如果您不想将kw存储为字典,例如如果您还在其他地方使用它作为字典查找中的键。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接