2016-02-16 1 views
1

Как бы вы это объяснили? Я знаю, что 1 == Правда верно, но почему это отличается от любого другого числа. Также почему оператор if выполняется, если 30 показывает, что он не является True.Логическая путаница на Python с int и bool

>>> 30 == True 
False 

>>> if 30: 
... print 'A' 
... 
A 
+1

'print bool (30)' –

+0

Также см. [Здесь] (http://stackoverflow.com/questions/2764017/is-false-0-and-true-1-in-python-an-implementation-detail -или-это-это-Guarante). – TigerhawkT3

ответ

3

Класс bool наследуется от int. Если вы скажете int(True), вы увидите, что результат 1. 30 не равно 1, поэтому он также не равен True. bool(30) равен True, однако if 30: выполнит.

+0

Он не отвечает, почему если 30: работает – AlokThakur

+0

@AlokThakur: True; Я отредактировал свой ответ. – zondo

5

Истинный кодируется внутренне как ; False является . Таким образом, 30 не равен 1.

Однако, когда вы оцениваете логическое выражение, карты в Ложные; все остальное сопоставляется с True. Это связано с тем, что проверка на 0 очень быстро на аппаратном уровне.

+2

«False is 0» - Python не согласен :-P –

+1

** print int (False) ** дает 0. – Prune

+2

И 'False is 0' дает' False'. –

Смежные вопросы