第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

具有動(dòng)態(tài)功能的Python字典命令?

具有動(dòng)態(tài)功能的Python字典命令?

藍(lán)山帝景 2021-03-19 14:10:10
PHP / Python的新手,正在嘗試圍繞以下示例中的update()和get()這些示例:https://pypi.python.org/pypi/django-social-auth/0.3.0update():看起來這只是doina jquery-ish類型的更新,僅適用于enabled()...的項(xiàng)目……我真的不知道該功能如何從val中產(chǎn)生。            backends.update(((key, val)                for key, val in sub.BACKENDS.items()                    if val.enabled()))并且get():為什么它有兩組()()?BACKENDS.get(name, lambda *args, **kwargs: None)(*args, **kwargs)
查看完整描述

3 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

該dict.update()函數(shù)可以(key, value)成對(duì)迭代。您那里的代碼在生成此類的生成器表達(dá)式中傳遞。它循環(huán)遍歷,sub.BACKENDS.items()并且對(duì)于每對(duì)僅選擇其val.enabled()方法返回的對(duì)象True。您也可以將其表示為for循環(huán):


for key, value in sub.BACKENDS.items():

    if value.enabled():

        backends[key] = value

該dict.get()函數(shù)返回鍵或默認(rèn)值。這里的默認(rèn)值是一個(gè)匿名函數(shù)a lambda。因此,BACKEND詞典要么在name變量中具有命名鍵的值,要么返回lambda匿名函數(shù)。無論哪種方式,.get()調(diào)用結(jié)果本身都會(huì)被調(diào)用。在Python中,函數(shù)是一流的對(duì)象。您也可以將它們存儲(chǔ)在字典中;如果您從字典中檢索一個(gè),您仍然可以調(diào)用它:


>>> def foo(): print 'bar'

... 

>>> somedict = {'howdy': foo}

>>> somedict['howdy']()

bar

>>> somedict['howdy']

<function foo at 0x109ab9320>

>>> somedict.get('non-existent', 'not found')

'not found'

>>> somedict.get('howdy', 'not found')

<function foo at 0x109ab9320>

>>> somedict.get('howdy', 'not found')()

bar

因此,將多余的()時(shí)間.get()應(yīng)用于.get()返回的所有內(nèi)容。


Lambda是可以在表達(dá)式中定義的匿名函數(shù)(def functionname()一行是語句,必須獨(dú)立存在);因此,可以在將lambdas直接存儲(chǔ)到字典中的同時(shí)對(duì)其進(jìn)行定義:


>>> somedict = {'howdy': lambda: 'bar'}

>>> print somedict['howdy']()

bar


查看完整回答
反對(duì) 回復(fù) 2021-03-30
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

我將嘗試編寫您的示例,但要更加清楚。參見@Martijn Pieters的答案中的解釋。


new_items = [(key, func) for key, func in sub.BACKENDS.items() if func.enabled()]

backends.update(new_items)


def do_nothing(*args, **kwargs):

    pass


func = BACKENDS.get(name, do_nothing)

func(*args, **kwargs)



查看完整回答
反對(duì) 回復(fù) 2021-03-30
  • 3 回答
  • 0 關(guān)注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)