5.7 条件判断
用 while
和 if
语句的判断语句不仅仅可以包含比较,还可以包含操作符。
比较操作符 in
和 not
用来检查一个值是否出现在一个序列当中。操作符 is
和 is not
用来比较两个对象是否真的是同一个对象,它仅仅在比如列表这样的可变对象中才有用。所有的比较操作符都有同样的优先级,都比所有的数字操作符的优先级要低。
比较操作可以使用链式。比如 a < b == c
检测出 a
是否比 b
小,并且 b
是否等于 c
。
比较操作可以使用 Boolean 操作符 and
和 or
结合使用,比较的输出结果 (或者任何其他的 Boolean 表达式 )可以用 not
否定。它们比比较操作符优先级更低。在两者之间, not
的优先级最高,or
的优先级最低,所以 A and not B or C
和 (A and (not B)) or C
是等价的。就和所有的情况一样,圆括号可以用来表达想要得到的组合。
Boolean 操作符 and
和 or
就是所谓的 短路操作符:它们的参数从左至右及结算,一旦输出结果确定下来,计算就会停止。举个例子,如果 A
和 B
是 true,而 B
是 false,那么 A and B and C
不会计算表达式 C
。当使用一个普通的值而不是 Boolean 的时候,返回短路操作符的结果就是最后一个计算的参数。
可以把比较的结果或者其他的 Boolean 表达式赋值给一个变量,举个例子:
>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'
注意,不像 C 语言,在 Python 中,表达式内部不能出现赋值语句。C 程序员可能会抱怨了,但是这就避免了 C 程序中的一个常见的问题:想要输入 ==
却输入了 =
。