python - python中的布尔值
问题描述
a=True and 1/0
print(a)
上述代码片段的输出显示错误。
而以下代码片段的输出:
a=False and 1/0
print(a)
是假的
为什么呢?从外行的角度来看,由于 1/0 是未定义的,因此每种情况下都应显示错误。
同样,如果我取 a = True 或 1/0,则输出为真,而错误为 False 或 1/0
我尝试了不同的版本:
a=1/0 or False
print(a)
或者
a=1/0 or True
print(a)
两者都显示错误(除以零)
我意识到这与我输入它们的顺序和我使用的布尔运算符有关。
无论如何,为什么我会得到输出,在某些情况下?
解决方案
两者都是短路and
的,即如果第一个输入分别为假或真,则根本不评估其余输入。这就是为什么两者都可以返回结果,而其他变体则不能。or
False and 1/0
True or 1/0
推荐阅读
- sql - 删除重复的行
- c - 标准 c 中奇怪的 mktime 行为
- c# - C# 时间戳零值无法在我的阅读器中读取
- c++ - 如何从 C++ 端连接到 QML 项目的 onClick 事件
- c# - 如何配置自定义配置对象
- azure - Asp.Net Core HTTP 错误 500.53 - Azure 应用服务上的 URL 重写模块错误
- java - 使用 Java8 LocalDateTime Iso 日期格式解析错误
- ms-access - 当从前面的“源”框中选择特定选项时,如何自动选中 Access 表单中的框
- javascript - 如何在缩放路径上使用 getTotalLength 和 getPointAtLength?
- wordpress - wordpress 主题页面不显示插件库