2015-03-05 3 views
1

Очевидно, что в условных операторах вы должны убедиться, что истинное или ложное значение возвращается для выполнения или пропускания блока кода, связанного с оператором if. Как одно значение служит истинным булевым в python? Я не уверен, является ли это универсальным для всех языков, но я обнаружил его в python 3.x.Почему одно значение работает как условие

Пример:

value = 1 
if value: 
    print("value == True") # prints every time 

Я бы ожидать, что компилятор жалуется или просто вернуть ложь. Почему компилятор воспринимает if value как истинный? кроме 0

ответ

5

Целые или плавает значения обрабатываются как True:

In [8]: bool(int(1)) 
Out[8]: True 

In [9]: bool(int(0)) 
Out[9]: False 

In [10]: bool(int(-1)) 
Out[10]: True 


In [16]: bool(float(1.2e4)) 
Out[16]: True 

In [17]: bool(float(-1.4)) 
Out[17]: True 

In [20]: bool(0.0) 
Out[20]: False 

In [21]: bool(0.000001) 
Out[21]: True 

Аналогичным образом, пустые списки, наборы, dicts, пустая строка, None, и т.д., рассматриваются как ложная:

In [11]: bool([]) 
Out[11]: False 

In [12]: bool({}) 
Out[12]: False 

In [13]: bool(set()) 
Out[13]: False 

In [14]: bool("") 
Out[14]: False 

In [19]: bool(None) 
Out[19]: False 
+2

также «Нет» и, конечно, «Неверно». Возможно также предоставить ссылку на соответствующие [docs] (https://docs.python.org/3/library/stdtypes.html#truth-value-testing) –

+0

Есть ли причина, по которой только 0 возвращает false и почему дает не булевский значения Булевы значения? – JGerulskis

+0

@AdamSmith Просто добавил None и плавает значения. – Marcin

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