2 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
在python中,就像許多其他語(yǔ)言一樣,變量也可以包含一個(gè)函數(shù),您可以像包含數(shù)字或字符串的其他變量一樣將它們傳遞給其他對(duì)象。
CherryPy的member_of函數(shù)本身在您的示例中確實(shí)返回了一個(gè)函數(shù)。
我通過(guò)簡(jiǎn)單的步驟對(duì)其進(jìn)行解釋?zhuān)?/p>
如果您編寫(xiě)member_of()它,則返回函數(shù)member_of()的結(jié)果,check在這種情況下,該函數(shù)的名稱(chēng)為該函數(shù)。
cb_function = member_of('admin')
此時(shí),變量cb_function保存調(diào)用函數(shù)的結(jié)果member_of,并在最后一行member_ofreturn中check,它在函數(shù)內(nèi)定義member_of為另一個(gè)函數(shù)!
您必須再次調(diào)用第一個(gè)結(jié)果,因?yàn)槟梢圆⑶冶仨氁耘c在當(dāng)前上下文中定義的局部函數(shù)幾乎相同的方式來(lái)對(duì)待它,以通過(guò)以下操作獲得最終結(jié)果:
my_result = cb_function()
然后,您將繼續(xù)使用結(jié)果。例如,您可以檢查其布爾值:
if my_result:
# do something
...
上面的3個(gè)步驟可以寫(xiě)得更短:
cb_function = member_of('admin')
if cb_function():
# do something
...
甚至更短:
if member_of('admin')():
# do something
...
起初,在python中擁有double可能看起來(lái)有點(diǎn)奇怪()(),但是如果您考慮一會(huì)兒,這是很有意義的。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果執(zhí)行它,這很簡(jiǎn)單。
member_of()
將返回方法對(duì)象檢查。您必須執(zhí)行以下操作才能獲得結(jié)果member_of('admin')()
:
k=member_of('admin') if k():
做你的任務(wù)。
添加回答
舉報(bào)