这在python中意味着什么?

时间:2016-02-18 14:26:34

标签: 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 个答案:

答案 0 :(得分:0)

双冒号不做任何事情。它只是格式字符串的固定部分。

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

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

如您所见,format只是替换vals给出的关键字参数中的值。