我正在查看一些Web2py代碼。Python - 減少函數和|運算符
變量tokens
是某種類型的字符串列表。更確切地說,它被定義爲tokens = form.vars.name.split()
,其中form.vars.name
是一個字符串。
下面的指令我的問題涉及:
query = reduce(lambda a,b:a&b,[User.first_name.contains(k)|User.last_name.contains(k) for k in tokens])
這裏是我的問題:
我知道
lambda a,b:a&b
定義的a
和b
功能。什麼是a&b
?User.first_name
User.first_name
方法特定於Web2py?還是它存在於標準的Python?這是什麼
|
運營商在?reduce
函數做什麼?
您有沒有機會檢查文檔? – 2011-06-03 16:56:50
如果'contains(k)'返回一個布爾值,它可以被重寫爲'query = all(User.first_name.contains(k)或User.last_name.contains(k)for k in token)'。 – 2011-06-03 17:05:28
無視我之前的評論,因爲'contains()'不會返回一個布爾值,並且按位運算符已被重新加載用於其他目的。查看Jochen Ritzel的更多答案。 – 2011-06-03 18:27:26