Pythonのbool
前提として,Pythonでは0や空じゃないものはbool値がTrueになる.
bool(0) # False
bool(0.1) # True
bool("") # False
bool([""]) # True
逆に,TrueとFalseは1と0と同じように演算ができる.
True*1 # 1
False*1 # 0
True+0 # 1
True+True # 2
論理演算
Pythonに限った話ではないが,andとorは両辺を短絡評価している.
True and False # True
print("a") or print("b")
# a
# b
1 and print("b") # b
そしてPythonの論理演算は結果がboolに限らない.
100 and 200 # 200
200 and 100 # 100
100 or 200 # 100
200 or 100 # 200
and,orではなく&,| を利用するとビット演算になる.
True & False # False
True & 1 # 1
True & 2 # 0
123 & 125 # 121