当前位置:  开发笔记 > 编程语言 > 正文

Python中的动态关键字参数?

如何解决《Python中的动态关键字参数?》经验,为你挑选了3个好方法。

python是否有能力创建动态关键字?

例如:

qset.filter(min_price__usd__range=(min_price, max_price))

我希望能够根据选定的货币更改usd部分.



1> jfs..:

是的,它确实.使用**kwargs在函数定义.

例:

def f(**kwargs):
    print kwargs.keys()


f(a=2, b="b")     # -> ['a', 'b']
f(**{'d'+'e': 1}) # -> ['de']

但你为什么需要呢?


谢谢,做到了.我需要这个,因为我无法访问函数本身(它是一个Django函数).所以方法本身已经在寻找**kwargs,但是我需要为要解析的方法动态创建关键字.

2> James Hopkin..:

如果我理解你正确的要求,

qset.filter(**{
    'min_price_' + selected_currency + '_range' :
    (min_price, max_price)})

做你需要的.



3> Benjamin Pol..:

您可以通过声明您的函数来轻松完成此操作:

def filter(**kwargs):

您的函数现在将传递一个名为kwargs的字典,其中包含传递给您的函数的关键字和值.请注意,从语法上讲,这个词kwargs是没有意义的; 这**是导致动态关键字行为的原因.

你也可以反过来.如果你正在调用一个函数,并且你有一个与参数对应的字典,你可以这样做

someFunction(**theDictionary)

还有较少使用的*foo变体,它会导致您接收一组参数.这类似于普通的C vararg数组.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有