5.7 条件判断

whileif 语句的判断语句不仅仅可以包含比较,还可以包含操作符。

比较操作符 innot 用来检查一个值是否出现在一个序列当中。操作符 isis not 用来比较两个对象是否真的是同一个对象,它仅仅在比如列表这样的可变对象中才有用。所有的比较操作符都有同样的优先级,都比所有的数字操作符的优先级要低。

比较操作可以使用链式。比如 a < b == c 检测出 a 是否比 b 小,并且 b 是否等于 c

比较操作可以使用 Boolean 操作符 andor 结合使用,比较的输出结果 (或者任何其他的 Boolean 表达式 )可以用 not 否定。它们比比较操作符优先级更低。在两者之间, not 的优先级最高,or 的优先级最低,所以 A and not B or C(A and (not B)) or C 是等价的。就和所有的情况一样,圆括号可以用来表达想要得到的组合。

Boolean 操作符 andor 就是所谓的 短路操作符:它们的参数从左至右及结算,一旦输出结果确定下来,计算就会停止。举个例子,如果 AB 是 true,而 B 是 false,那么 A and B and C 不会计算表达式 C。当使用一个普通的值而不是 Boolean 的时候,返回短路操作符的结果就是最后一个计算的参数。

可以把比较的结果或者其他的 Boolean 表达式赋值给一个变量,举个例子:

  1. >>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
  2. >>> non_null = string1 or string2 or string3
  3. >>> non_null
  4. 'Trondheim'

注意,不像 C 语言,在 Python 中,表达式内部不能出现赋值语句。C 程序员可能会抱怨了,但是这就避免了 C 程序中的一个常见的问题:想要输入 == 却输入了 =