Я буду странным голосом (так как все ответы осуждают использование факта, что False == 0
и True == 1
, как язык гарантирует), поскольку я утверждаю, что использование этого факта для упрощения вашего кода прекрасно.
Исторически логические операции true / false имели тенденцию просто использовать 0
для false и 1
для true; в течение жизненного цикла Python 2.2 Гвидо заметил, что слишком много модулей начинаются с назначений, таких как false = 0; true = 1
, и это приводит к шаблону и бесполезному изменению (последнее, потому что заглавные буквы true и false были повсюду - некоторые использовали заглавные буквы, некоторые строчные, некоторые заглавные) и поэтому представили подкласс bool
из int
и его константы True
и False
.
В то время произошел некоторый откат, так как многие из нас боялись, что новый тип и константы будут использоваться новичками Python для ограничения возможностей языка, но Гвидо был непреклонен в том, что мы просто пессимистичны : никто бы никогда не понял Python так плохо, например, чтобы избежать совершенно естественного использования False
и True
в качестве индексов списков, или для суммирования, или других таких совершенно ясных и полезных идиом.
Ответы на эту тему доказывают, что мы были правы: как мы и опасались, возникло полное непонимание ролей этого типа и констант , а люди избегают, и, хуже !, призывая других избегать совершенно естественных конструкций Python в пользу бесполезных вращений.
Борясь с течением такого недоразумения, я призываю всех использовать Python в качестве Python , , а не , пытаясь навязать его в форму других языков, функциональность и предпочтительный стиль которых довольно разные. В Python True и False на 99,9% похожи на 1 и 0, отличаясь исключительно в их str(...)
(и, следовательно, repr(...)
) форме - для каждые другие операции, кроме строковых, просто не стесняйтесь использовать их без искажений. Это касается индексации, арифметики, битовых операций и т. Д. И т. Д. И т. Д.