请问为什么 (1 and 3)的结果是3,这是依据什么

来源:6-2 表达式的优先级

qq_光光_kotMPS

2019-03-17

请问为什么 (1 and 3)的结果是3,这是依据什么,谢谢。

写回答

3回答

慕粉916768

2019-08-11

and和or也可以称作惰性求值,参数从左向右解析,一旦结果可以确定就停止解析(能少做就少做)。如果and判断的第一个条件是假,那么后面条件是真还是假都没半毛钱关系,就是假,不会再取解析后面的条件,直接返回第一个条件的值。同样,对于 or,如果第一个条件是真,后面就不再进行判断了,就返回第一个条件的值。

对于1 and 3,按从左至右的顺序,1非0,是True。那么第1个值是True,还不能判断下一个值是不是True,所以得继续判断下一个值(不能偷懒不解析下面的条件),因此还得继续判断3是True还是False。因此3是最后解析的变量,所以会返回3。

按上面的举一反三就可以了。在以后写if语句中,and条件时,尽量把条件结果是False的写在左边,这样代码效率会比较高。

0
0

慕村3142859

2019-07-29

and 右, or 左   明白吗?   如果不是则相反     最好记啦, and you? 译为: "and 右"

0
0

7七月

2019-03-17

and 需要2个都为真,所以必须判断and后面的元素

0
0

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14640 学习 · 4477 问题

查看课程