什么是解决以下问题的最pythonic方法?从交互式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'
Run Code Online (Sandbox Code Playgroud)
目前我正在解决以下问题:
>>> exec 'result = f(%s=val)' % kw
>>> result
'a was True'
Run Code Online (Sandbox Code Playgroud)
但它看起来很笨拙......
(python 2.7+或3.2+解决方案都可以)
zee*_*kay 34
使用关键字参数解包:
>>> kw = {'a': True}
>>> f(**kw)
<<< 'a was True'
Run Code Online (Sandbox Code Playgroud)
在许多情况下,您可以使用
f(kw)
Run Code Online (Sandbox Code Playgroud)
如果您在关键字参数之前指定了所有参数,则不必将它们指定为关键字参数。
Python 3具有仅关键字参数的语法,但是默认情况下不是这样。
或者,以@zeekay的答案为基础,
kw = 'a'
f(**{kw: True})
Run Code Online (Sandbox Code Playgroud)
如果您不想将kw存储为字典,例如,如果您还将kw用作其他地方的字典查找中的键。
| 归档时间: |
|
| 查看次数: |
8968 次 |
| 最近记录: |