栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-“ if”语句中的逻辑评估顺序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-“ if”语句中的逻辑评估顺序

or
and
短路
,请参见布尔操作文档:

表达式

x and y
首先计算
x
; 如果
x
为假,则返回其值;否则,
y
将求值并返回结果值。

表达式

x or y
首先计算
x
; 如果
x
为true,则返回其值;否则,
y
将求值并返回结果值。

注意如何,对

and
y
只有 当评估
x
计算为一个真正的价值。相反,for
or
y
仅当
x
评估为False时才评估。

对于第一个表达式

True or blah
,这意味着
blah
永远不会对其进行求值,因为第一部分已经存在
True

此外,您的自定义

Blah
类被视为True:

在布尔运算的上下文中,以及当控制流语句使用表达式时,以下值将解释为false:

False
,,
None
所有类型的数字零以及空字符串和容器(包括字符串,元组,列表,字典,集合和Frozensets)。所有其他值均解释为true。(有关
__nonzero__()
更改方法,请参见特殊方法。)

由于您的类没有实现

__nonzero__()
方法(也没有实现
__len__
方法),因此就
True
布尔表达式而言,将其考虑在内。

因此,在表达式

blah or blah.notexist
blah
为true,并且
blah.notexist
从不对其求值。

经验丰富的开发人员经常有效地使用此功能,通常用于指定默认值:

some_setting = user_supplied_value or 'default literal'object_test = is_it_defined and is_it_defined.some_attribute

警惕将它们链接起来,并在适用的情况下使用条件表达式代替。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633817.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号