Вредные советы 9. Как не надо сравнивать с True
Продолжая прошлый разговор про сравнения (тогда было про None), в этот раз говорим про
Антипаттерн
Как не надо сравнивать с
А как надо?
Тут есть два пути. Во-первых, обратите внимание на документацию Питончика:
In the context of Boolean operations, and also when expressions are used by control flow statements, the following values are interpreted as false: False, None, numeric zero of all types, and empty strings and containers (including strings, tuples, lists, dictionaries, sets and frozensets). All other values are interpreted as true. User-defined objects can customize their truth value by providing a __bool() method__
Что же это значит? А значит что для любого не из списка (
Есть еще и другой вариант, но он похуже. Используется, когда вам нужно отличить
#ВредныеСоветы
Продолжая прошлый разговор про сравнения (тогда было про None), в этот раз говорим про
True
. Практически в любом языке программирования есть этот антипаттерн.Антипаттерн
Как не надо сравнивать с
True
:flag = True
if flag == True:
print("Вот так делать не надо!")
А как надо?
Тут есть два пути. Во-первых, обратите внимание на документацию Питончика:
In the context of Boolean operations, and also when expressions are used by control flow statements, the following values are interpreted as false: False, None, numeric zero of all types, and empty strings and containers (including strings, tuples, lists, dictionaries, sets and frozensets). All other values are interpreted as true. User-defined objects can customize their truth value by providing a __bool() method__
Что же это значит? А значит что для любого не из списка (
False
, None
, нуля во всех числовых типах и пустых строках) выражение if flag:
будет равно True
. Есть еще и другой вариант, но он похуже. Используется, когда вам нужно отличить
True
от другие True
-like значений. Выглядит он как if flag is True:
#ВредныеСоветы