本文最后更新于 590 天前,其中的信息可能已经有所发展或是发生改变。
if
if 实现三元运算
例:
a = 1
b = 2
c = b if a>b else a
print(c)
结果为: 1
while
while int:
如
k = 1
while k:
<循环体>
当 k!=0 时,将会不断循环。
一行挨打
while True: pass
list
list 实现三元运算
例:
a = 1
b = 2
c = [a,b][a>b]
print(c)
结果为: 1
当 a>b
为 True
时,[a,b][a>b]
等价于 [a,b][1]
,即取 b。
当 a>b
为 False
时,[a,b][a>b]
等价于 [a,b][0]
,即取 a。
and & or
and/or 返回的值不是布尔值,而是参与计算的某个值。
and
and
从左到右计算表达式的(布尔)值,返回最后一个为真的值。
若计算中出现假,则立即返回。
如:
print('a' and 'b' and 'c')
其结果为: c
or
or 从左到右计算表达式的值,返回第一个为真的值。
若最终无真,则为假。
如:
print('a' or 'b' or 'c')
其结果为: a
三元运算
例:
a = 1
b = 2
c = True
d = (c and [a] or [b])[0]
print(d)
其结果为: 1
当 c 为 True 时, c and [a] 返回 [a] ,进行运算 [a] or [b] ,返回 [a],再经过 [a][0] 取到值 a。
当 c 为 False 时, c and [a] 返回 c ,进行运算 c or [b] ,返回 [b],再经过 [b][0] 取到值 b。
不直接使用 a/b 而使用 [a]/[b] ,是为了防止当 a/b 为空字符串/list/dict/… 等时出现异常。