三元运算法 exp1 if condition else exp2
condition是判断条件,exp1 和 exp2 是两个表达式。如果
condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果
items = [1, 2, 3]
def sum(x):
head, *tail = x
return head + sum(tail) if tail else head
print(sum(items))
上图中的 sum(tail) if tail else head
就是三元运算法
tail就是condition 只要tail=[] 就把head给他
设a=sum(tail) if tail else head
第一次
1 + sum(2,3)if(2,3)else 1
由于
a=sum(2,3)if(2,3)else 1
等价于
1+a
condition if(2,3)为真 所以a=sum(2,3)
1+sum(2,3)
第二次
1+(2+sum(3) if 3 else 2)
同理得
1+(2+sum(3))
第三次
1+(2+(3 + sum[] if [ ])else 3)
a=sum[] if [] else 3
(空列表为假)
等价于a=3
得
1+(2+(3))=1+5=6