2016-02-18 108 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