我正在看一些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是什么?contains方法的User.first_name是特定于Web2py吗?或者它是否存在于标准Python中?|操作符在User.first_name.contains(k)|User.last_name.contains(k)中是什么?reduce函数是做什么的?发布于 2011-06-03 16:59:14
&和不是按位和/或在这里使用,而是用来构建一个表示数据库查询的特殊对象!它们对应于SQL语句中的AND和OR。发布于 2011-06-03 16:56:53
__contains__的映射,但它确实出现在Py3k文档中。发布于 2011-06-03 16:57:42
&是按位和运算符。编写代码的人几乎肯定意味着and,尽管对于布尔值,结果是一样的。.contains()是web2py提供的一种方法。a.contains(b)更多地被写成b in a。|是按位或运算符。再说一遍,他们可能是指or。reduce将作为第一个参数的函数应用于第二个参数中的可迭代参数,从左到右,首先是前两个元素,然后是计算结果和第三个元素,等等。https://stackoverflow.com/questions/6230117
复制相似问题