请问为什么 (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的写在左边,这样代码效率会比较高。
00 -
慕村3142859
2019-07-29
and 右, or 左 明白吗? 如果不是则相反 最好记啦, and you? 译为: "and 右"
00 -
7七月
2019-03-17
and 需要2个都为真,所以必须判断and后面的元素
00
相似问题
请问为什么匹配3位就可以了?
回答 2
请问按位与,1 and 3为什么取得是3
回答 6