首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么运算符模块没有逻辑或函数?

为什么运算符模块没有逻辑或函数?
EN

Stack Overflow用户
提问于 2011-10-26 03:21:40
回答 3查看 625关注 0票数 14

在Python3中,operator.or_等同于逐位|,而不是逻辑or。为什么逻辑or没有运算符

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-26 03:30:10

orand运算符不能表示为函数,因为它们的short-circuiting行为:

代码语言:javascript
复制
False and some_function()
True or some_function()

在这些情况下,永远不会调用some_function()

另一方面,假设的or_(True, some_function())必须调用some_function(),因为函数参数总是在调用函数之前计算。

票数 22
EN

Stack Overflow用户

发布于 2011-10-26 03:26:03

逻辑或是一种控制结构-它决定代码是否正在执行。考虑一下

代码语言:javascript
复制
1 or 1/0

这不会抛出一个错误。

相反,无论函数是如何实现的,下面的都会抛出错误:

代码语言:javascript
复制
def logical_or(a, b):
  return a or b
logical_or(1, 1/0)
票数 9
EN

Stack Overflow用户

发布于 2011-10-26 06:06:54

如果你不介意别人提到的短路行为,你可以试试下面的代码。

all([a, b]) == (a and b)

any([a, b]) == (a or b)

它们都接受包含2个或更多元素的单个集合(如列表、元组甚至生成器),因此以下内容也是有效的:

all([a, b, c]) == (a and b and c)

有关更多详细信息,请查看相关文档:http://docs.python.org/py3k/library/functions.html#all

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7894653

复制
相关文章

相似问题

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