首页
学习
活动
专区
圈层
工具
发布

操作符
EN

Stack Overflow用户
提问于 2011-06-03 16:45:53
回答 3查看 1.6K关注 0票数 2

我正在看一些Web2py代码。

变量tokens是某种类型的字符串列表。更准确地说,它被定义为tokens = form.vars.name.split(),其中form.vars.name是一个字符串。

我的问题涉及以下指示:

代码语言:javascript
复制
query = reduce(lambda a,b:a&b,[User.first_name.contains(k)|User.last_name.contains(k) for k in tokens])

以下是我的问题:

  1. 我知道lambda a,b:a&b定义了ab的函数。a&b是什么?
  2. contains方法的User.first_name是特定于Web2py吗?或者它是否存在于标准Python中?
  3. |操作符在User.first_name.contains(k)|User.last_name.contains(k)中是什么?
  4. reduce函数是做什么的?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-03 16:59:14

  1. 在Web2Py中,&不是按位和/或在这里使用,而是用来构建一个表示数据库查询的特殊对象!它们对应于SQL语句中的ANDOR
  2. 包含Web2Pys DAL的一部分
  3. 见1。
  4. 折叠是一个非常基本的高阶函数,本质上使用给定的函数将一个列表缩减为一个结果。
票数 7
EN

Stack Overflow用户

发布于 2011-06-03 16:56:53

  1. 按位和
  2. 我相信包含,在这个上下文中或多或少是到__contains__的映射,但它确实出现在Py3k文档中。
  3. 按位或
  4. reduce遍历可迭代对象(param 2),并对所有元素调用传递的函数(param 1)。它返回聚合值。
票数 0
EN

Stack Overflow用户

发布于 2011-06-03 16:57:42

  1. &是按位和运算符。编写代码的人几乎肯定意味着and,尽管对于布尔值,结果是一样的。
  2. .contains()是web2py提供的一种方法。a.contains(b)更多地被写成b in a
  3. |是按位或运算符。再说一遍,他们可能是指or
  4. reduce将作为第一个参数的函数应用于第二个参数中的可迭代参数,从左到右,首先是前两个元素,然后是计算结果和第三个元素,等等。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6230117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档