python小技巧 -- 赋值语句中的逻辑运算符

Python逻辑运算的特殊性

python的and和or执行布尔逻辑运算,但是他们并不返回布尔值,而是返回他们实际进行比较的值之一。

举例说明:

1
2
3
4
5
6
7
8
9
>>> a = 10
>>> b = 20
>>> a and b
20
>>> a or b
10
>>> b or a
20
>>>

赋值语句中的用法

tronado 中对io_loop的赋值就使用了这样的方式。 self.io_loop = io_loop or ioloop.IOLoop.instance()

or and 可以使赋值变得更加简洁

1
2
3
4
5
6
7
8
9
10
11
12
13

a = None
b = 'sdada'

c = a or b

# 等价于
if a:
    c = a
else:
    c = b


“世界就像是个巨大的马戏团,它让你兴奋,却让我惶恐,因为我知道散场后永远是有限温存,无限心酸。”——Charlie Chaplin