在C语言中有 Y?X:Z一样的语法,python也需要有易于使用的三元表达式来减少程序员需要输入的代码。
if/else 三元表达式
if X:
A = Y
else:
A = Z
可以简写成:
A = Y if X else Z
只有X为真的时候返回Y,否则返回Z
and or 三元表达式
and or 得益于python布尔运算的以下特性:
- 任何非零数字 或 非空对象对为真
- 数字零、空对象以及特殊对象None都被认为是假
- 比较和相等测试都会递归的应用到数据结构中
- 比较和相等测试会返回 True 或者False
- 布尔and和or运算符会返回真或假的操作对象,如
2 and 3
返回3,0 and 3
返回0,
例子
- 2 and 3 or 4 首先运行and,2和3都要判断且都为真,因此and运算返回3(真),因此不用运行or运算
- 0 and 2 or 4 首先运行and,因为0为假,所以当and运算判断到0 处就短路不再判断2,因此返回0;而因为and运算返回了0(假),因此or运算需要再接着判断4(真),因此返回4。
用bool()函数实现三元运算
>>>['f', 't'][bool('')]
'f'
>>>['f', 't'][boo('t')]
't'
bool()函数返回0 或者 1