keyword-argument - python 大多数使用变量作为关键字分配关键字参数的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'



现在,我将用下面的方法来解决它:


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


>>> result


'a was True'



但它看起来很笨拙。

( python 2.7 + 或者 3.2 + 解决方案均可用)

时间:

使用关键字参数解包插件:


>>> kw = {'a': True}



>>> f(**kw)


< <<'a was True'



在许多情况下你可以使用

 
f(kw)



 

如果不需要将关键字参数指定为关键字,则不必将它的指定为关键字。

python 3有一个关键字的语法,只有参数,但默认情况下不是它们的语法。

或者用 @zeekay's 回答


kw = 'a'


f(**{kw: True})



例如如果你不想将kw存储为一个字典,例如你也将它作为字典中的键在其他地方。

...