2016-02-18 81 views
-2

我很难理解python中的一些代码,并会真正感谢它的任何帮助。python中的这个意思是什么?

condition = "{field}::{cast} {operator} {value}".format(**{ 
    'field': field_exp(field), 
    'cast': cast, 
    'value': json.dumps(parameter).replace('"', "'"), 
    'operator': operator}) 

我无法理解本声明中真正发生了什么。 “双冒号”是做什么的?又是什么格式(** ...意味着

代码

另外,也有另一行:?

condition = "jsonb_typeof({field}::jsonb) is {not} null".format(**{ 
    'field': field_exp(field), 
    'not': 'not' if parameter else ''}) 

此再次声明如下类似的模式,我会很感激,如果有人能解释这是怎么回事。在这里。

谢谢 体位

+1

您是否尝试过运行它? – msw

+0

双冒号没有做任何特别的事情。它只是意味着结果字符串中会有两个冒号,就像第二个字符串的“jsonb_typeof”和“is”和“null”一样。 – Kevin

回答

0

双冒号没有做任何事情,它是格式字符串的只是一个固定的组成部分。

**表示法允许从dict指定关键字参数。这是一个简单的,类似的例子,应该明确这一点。我分配dict给一个变量,而不是在网上用它来使它更加明显发生了什么:

>>> vals = {"a":"w", "b":"x", "c":"y", "d":"z"} 
>>> "{a}::{b} {c} {d}".format(**vals) 
'w::x y z' 
>>> 

正如你所看到的,format只是从它的关键字参数,这是由vals给出替换值。

+0

非常感谢。我知道了! – asanas