Python Nation🐍🇺🇦
True - це насправді 1
Багато хто не знає, але bool у пайтоні це підклас int. Тобто True дорівнює 1, а False дорівнює 0. Ними навіть можна рахувати:
True + True # 2
False * 10 # 0
True == 1 # True
isinstance(True, int) # True
З цього виходить зручна штука. Треба порахувати, скільки елементів підходять під умову? Лічильник не потрібен:
orders = [120, 0, 45, 0, 300]
paid = sum(x > 0 for x in orders) # 3
Кожен x > 0 це True або False, а sum складає їх як 1 і 0. Швидко і без зайвого коду.
Але є нюанс. Раз True == 1, то в словнику вони стають одним ключем:
d = {1: "one", True: "boolean"}
print(d) # {1: 'boolean'}
Ключ лишився 1, а значення перезаписалось. Такий баг знайти непросто.
Коротко: сумувати булеві це нормально, а мішати їх з числами як ключі не варто.
1 · 308 ·