while
和 if
语句中使用的条件不仅可以使用比较,而且可以包含任意的操作。
比较操作符 in
和 not in
审核值是否在一个区间之内。操作符 is
和 is not
比较两个对象是否相同;这只和诸如列表这样的可变对象有关。所有的比较操作符具有相同的优先级,低于所有的数值操作。
比较操作可以传递。例如 a < b == c
审核是否 a 小于 b 并且 b 等于 c。
比较操作可以通过逻辑操作符 and
和 or
组合,比较的结果可以用 not
来取反义。这些操作符的优先级又低于比较操作符,在它们之中,not
具有最高的优先级, or
优先级最低,所以 A and not B or C
等于 (A and (notB)) or C
。当然,括号也可以用于比较表达式。
逻辑操作符 and
和 or
也称作短路操作符:它们的参数从左向右解析,一旦结果可以确定就停止。例如,如果 A 和 C 为真而 B 为假, A and B and C
不会解析 C。作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。
可以把比较或其它逻辑表达式的返回值赋给一个变量,例如:
>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
>>> non_null = string1 or string2 or string3
>>> non_null
'Trondheim'
需要注意的是 Python 与 C 不同,在表达式内部不能赋值。C 程序员经常对此抱怨,不过它避免了一类在 C 程序中司空见惯的错误:想要在解析式中使 ==
时误用了 =
操作符。