Python三目运算符

Python中提供的三目运算符类似于其它语言中的?:, 是一个条件运算符:

expr1 if condition else expr2

condition是判断条件, expr1expr2是两个表达式. 如果condition成立, 就执行expr1, 并把expr1的结果作为整个表达式的结果; 如果condition不成立, 就执行expr2, 并把expr2的结果作为整个表达式的结果.

例如, 现在有两个数字, 我们希望获得其中较大的那一个, 那么可以使用if else语句:

if a > b:
    max = a
else:
    max = b

使用条件运算符更加简洁:

max = a if a > b else b

上面的语句的含义是:

  • 如果a > b成立, 就把a作为整个表达式的值, 并赋值给变量max;
  • 如果a > b不成立, 就把b作为整个表达式的值, 并赋值给变量max.

三目运算符的嵌套

Python三目运算符支持嵌套, 如此可以构成更加复杂的表达式. 在嵌套时需要注意ifelse的配对, 例如:

a if a>b else c if c>d else d

应该理解为:

a if a>b else (c if c>d else d)

注解

三目运算符虽然可以嵌套, 但是嵌套后通常理解起来比较困难, 所以尽量不要嵌套.