python中的三元表达式

在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

你可能感兴趣的:(python中的三元表达式)