Python 中的and-or技巧


如果你是一名 C 语言黑客,肯定很熟悉 bool ? a : b 表达式,如果 bool 为真,表达式演算值为 a,否则为 b。基于 Python 中 and 和 or 的工作方式,你可以完成相同的事情。
4.6.1. 使用 and-or 技巧
例 4.17. and-or 技巧介绍>>> a = "first"
>>> b = "second"
>>> 1 and a or b

'first'
>>> 0 and a or b

'second'
[url=mk:@MSITStore:D:\STUDY\E-BOOK\python\Dive.Into.Python-zh-cn-5.4-with-code.chm::/power_of_introspection/and_or.html#apihelper.andor.3.1][/url]

这个语法看起来类似于 C 语言中的 bool ? a : b 表达式。整个表达式从左到右进行演算,所以先进行 and 表达式的演算。 1 and 'first' 演算值为 'first',然后 'first' or 'second' 的演算值为 'first'。
[url=mk:@MSITStore:D:\STUDY\E-BOOK\python\Dive.Into.Python-zh-cn-5.4-with-code.chm::/power_of_introspection/and_or.html#apihelper.andor.3.2][/url]

0 and 'first' 演算值为 False,然后 0 or 'second' 演算值为 'second'。
然而,由于这种 Python 表达式单单只是进行布尔逻辑运算,并不是语言的特定构成,这是 and-or 技巧和 C 语言中的 bool ? a : b 语法非常重要的不同。如果 a 为假,表达式就不会按你期望的那样工作了