Python中的逻辑运算符

鲍里斯

在阅读python中的逻辑运算符时,我遇到了一些表达式:

  5 and 1 

输出1

  5 or 1 

输出:5

谁能解释这是如何工作的?
我知道,操作数的的逻辑运算符是布尔

弘主角

据可查

x or y      if x is false, then y, else x 
x and y     if x is false, then x, else y 

两者都短路(例如,如果真,or则不会评估)。yx

该文档还指出了被认为falsyFalse0None,空序列/映射,...) -一切被认为是truthy

一些例子:

7 and 'a'             # -> 'a'
[] or None            # -> None
{'a': 1} or 'abc'[5]  # -> {'a': 1}; no IndexError raised from 'abc'[5]
False and 'abc'[5]    # -> False; no IndexError raised from 'abc'[5]

请注意,最后两个如何显示短路行为:IndexError不执行第二个语句(将引发)。

您关于操作数为布尔值的说法有点无聊。python确实有布尔值(实际上只有两个:TrueFalse;它们是int的子类型)。但是python中的逻辑运算只是检查操作数是还是不会在操作数上调用bool函数


在正式的python文档中似乎不使用术语truefalsy但是教python和此处社区的书籍确实使用了这些术语。english.stackexchange.com上有关于术语的讨论,维基百科也有提及

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章