【发布时间】:2023-03-24 02:55:01
【问题描述】:
我正在查看一些 Web2py 代码。
变量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的contains方法是 Web2py 特有的吗?或者它是否存在于标准 Python 中?User.first_name.contains(k)|User.last_name.contains(k)中的|运算符是什么?reduce函数有什么作用?
【问题讨论】:
-
您有机会查看文档吗?
-
如果
contains(k)返回一个布尔值,它可以重写为query = all(User.first_name.contains(k) or User.last_name.contains(k) for k in tokens)。 -
忽略我之前的评论,因为
contains()不返回布尔值,并且已为其他目的重新加载位运算符。有关更多信息,请参阅 Jochen Ritzel 的答案。