gggxbbb
事实比想象更离奇
EvaxTop

Python3 杂记

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>bTrue 时,[a,b][a>b] 等价于 [a,b][1] ,即取 b。

a>bFalse 时,[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/... 等时出现异常。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

转载请注明出处: https://evax.top/2021/04/04/python3-za-ji.html
如有问题请联系: i@evax.top

gggxbbb

文章作者

发表评论

textsms
account_circle
email

EvaxTop

Python3 杂记
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 时,将会不断循…
扫描二维码继续阅读
2021-04-04