和/或运算符返回值[重复]
- 2024-12-31 08:37:00
- admin 原创
- 36
问题描述:
我正在观看2007 年的《高级 Python》或《理解 Python》视频,在 18'27" 处,演讲者声称“有些人可能知道在 Python 中and
并or
返回两个值之一,而not
返回的始终是一个布尔值。”什么时候出现过这种情况?
据我所知,and
并且or
也返回布尔值。
解决方案 1:
and
and运算符确实会返回其操作数之一,而不是像or 这样的or
纯布尔值:True
`False`
>>> 0 or 42
42
>>> 0 and 42
0
而not
总是返回一个纯布尔值:
>>> not 0
True
>>> not 42
False
解决方案 2:
请参阅Python 文档中的标准库参考中的下表:
解决方案 3:
来自Python文档:
如果运算符 not 的参数为假,则返回 True,否则返回 False。
表达式 x and y 首先计算 x 的值;如果 x 为假,则返回其值;否则,计算 y 的值并返回结果值。
表达式 x or y 首先计算 x 的值;如果 x 为真,则返回其值;否则,计算 y 的值并返回结果值。
Python 的or
运算符返回第一个真值,或者最后一个值,然后停止。这对于需要后备值的常见编程任务非常有用。
就像这个简单的:
print my_list or "no values"
如果列表中有任何内容,它将打印my_list
。否则,它将打印no values
(如果列表为空,或者是None
...)。
一个简单的例子:
>>> my_list = []
>>> print my_list or 'no values'
no values
>>> my_list.append(1)
>>> print my_list or 'no values'
[1]
and
当您需要保护而不是后备时,可以使用来进行补充,它返回第一个 False-y 值或最后一个值并停止。
像这样:
my_list and my_list.pop()
这很有用,因为您不能使用list.pop
onNone
或[]
,它们是列表的常见先前值。
一个简单的例子:
>>> my_list = None
>>> print my_list and my_list.pop()
None
>>> my_list = [1]
>>> print my_list and my_list.pop()
1
在这两种情况下,都返回了非布尔值,并且没有引发异常。
解决方案 4:
需要为@Frédéric 的回答添加一些要点。
是否返回其中一个操作数???
这是真的,但背后的逻辑并非如此。在 Python 中,除 0 以外的数字被视为 True,而数字 0 被视为 False。
(0 和 42 -> 假和真)= 假。
这就是它返回 0 的原因。
(0 或 42->false 或 True)= 42
在这种情况下,由于操作数为 42,语句将为 True。所以在这种情况下,python 返回导致语句为真的操作数。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件