На днях узнал об одной интересной особенности типа bool в python:

>>> b = True
>>> b + 1
2

Поведение достатчно логичное, если учесть, что:

>>>> isinstance(b, int)
True

Всё дело в том, что тип bool - это всего-лишь синтаксический сахар и наследник от типа int, который, для удобства использования, может иметь всего два значения - 0 (False) и 1 (True). Пример выше врядли встретится в коде, но зать об этом стоит на случай если где-то случайно поменяется тип переменной с bool на int или наоборот.


Comments

Денис Russia

Tuesday, April 3, 2012 11:59 AM

Денис

Отмечу, что любое число != 0 тоже True

>>> b = 10
>>> if(b):
  print 'Good'

  
Good

отсюда следует, что самый правильный способ сравнивания два bool числа - через двойное отрицание.
Это не паранойя, а может реально пригодиться если значение bool переменной получено откуда-то извне.
>>> c=9
>>> b=10
>>> print (b==c)
False
>>> print ((not not b) == (not not c))
True

Comments are closed