LINUX.ORG.RU

История изменений

Исправление Virtuos86, (текущая версия) :

проверять булевое значение file, что в отличие от проверки на равенство с None позволяет пихать в file что угодно.

А что, пистон интерпретирует как False не только False и None?

Не только. Еще туда попадают все контейнеры с нулевым размером, включая строки, т.е. (), [], {}, «» и т.д. Ну и 0, естественно.

Собственно, до определенной версии True и False были обычными переменными:

True = 1 
False = 0
и только потом стали двумя эксклюзивными инстансами класса bool, субкласса int. То есть понятие «булевое значение» носило чисто декларативный характер и не несло за собой никакой проверки типов, поэтому такая широкая трактовка была нормальной.

Исправление Virtuos86, :

проверять булевое значение file, что в отличие от проверки на равенство с None позволяет пихать в file что угодно.

А что, пистон интерпретирует как False не только False и None?

Не только. Еще туда попадают все контейнеры с нулевым размером, включая строки, т.е. (), [], {}, «» и т.д. Ну и 0, естественно.

Собственно, до определенной версии True и False были обычными переменными:

True = 1 
False = 0
и только потом стали двумя эксклюзивными инстансами класса bool, субкласса int.

Исходная версия Virtuos86, :

проверять булевое значение file, что в отличие от проверки на равенство с None позволяет пихать в file что угодно.

А что, пистон интерпретирует как False не только False и None?

Не только. Еще туда попадают все контейнеры с нулевым размером, включая строки, т.е. (), [], {}, «» и т.д. Ну и 0, естественно.