okpython.net
Все для начинающих

Типы bool и NoneType в Python

Тип bool в Python

В Python, как и в других языках программирования, тип данных bool (т.е. логический тип данных) выражает истинность или ложность и состоит, соответст­венно, всего из двух предопределенных объектов True и False. Логические константы обычно являются результатом операций сравнения, особенно в выражениях управляющих конструкций, где они определяют ход дальнейших действий программы (см. пример №1).

Код Результат pythonCodes
# Сравним дроби.
n_1 = 155/247
n_2 = 189/289

# Если рез-том сравнения будет True.
if (n_1 > n_2) == True:
    print('155/247 > 189/289')	
# Если рез-т не равен False.
elif (n_1 == n_2) != False:
    print('155/247 = 189/289')		
# Иначе.
else:
    print('155/247 < 189/289')
155/247 < 189/289










		
			

Пример №1. Логический тип данных в Python (часть 1).

Обратите внимание, что в Python имена булевых констант True и False являются регистрозависимыми, поэтому использовать их нужно именно в указанном здесь регистре.

Стоит добавить, что True и False по сути являются обычными целыми числами 1 и 0, пусть и с некоторыми особенностями отображения на экране (см. пример №2).

Код Результат pythonCodes
# Вычислим и выведем рез-ты выражений.
res_1 = 1 + 2 + 3*0
print('1 + 2 + 3*0 =', res_1)	
res_2 = True + 2 + 3*False
print('True + 2 + 3*False =', res_2, end='\n\n')	

# Сравним числа и константы.
res_3 = (1 == True)
print('(1 == True) ->', res_3)				
res_4 = (0 == False)
print('(0 == False) ->', res_4, end='\n\n')		

# Но тип выделен отдельно.
print('type(1) ->', type(1))
print('type(True) ->', type(True), end='\n\n')				

print('type(0) ->', type(0))			
print('type(False) ->', type(False))
1 + 2 + 3*0 = 3
True + 2 + 3*False = 3

(1 == True) -> True
(0 == False) -> True

type(1) -> <class 'int'>
type(True) -> <class 'bool'>

type(0) -> <class 'int'>
type(False) -> <class 'bool'>





		
			

Пример №2. Логический тип данных в Python (часть 2).

Как видим, булевы константы действительно можно использовать в математических выражениях на равных с числами. Точно также и в операциях сравнения можно использовать вместо констант True и False числа 1 и 0 (попробуйте заменить константы числами в первом примере). Поэтому для себя их можно считать просто именованными «ноликами» и «единичками» не забывая при этом, что мы имеем дело с отдельным типом данных.

Логические операторы в Python

Python поддерживает следующие стандартные логические операторы: and (логическое И), or (логическое ИЛИ), not (логическое НЕ). Все они используются в логических выражениях для определения того или иного хода выполнения программы в зависимости от возвращаемого выражением результата (см. таблицу №3).

Пример Название Результат
not s Логическое НЕ True, если значение s равно False.
s and f Логическое И True, если оба значения s и f равны True.
s or f Логическое ИЛИ True, если оба значения равны True или хотя бы одно из значений s или f равно True.

Таблица №3. Логические операторы Python.

Важно понимать, как интерпретатор обрабатывает логические выражения. Если в выражении с оператором or первый (левый) операнд будет иметь значение True или в выражении с оператором and первый операнд будет иметь значение False, то второй (правый) операнд уже вычисляться не будет. Это связано с тем, что конечный результат в таких случаях уже не изменится, а следовательно отпадает и необходимость тратить время на обработку кода второго операнда. Однако при этом нужно быть внимательным и не помещать в правый операнд код, от которого может зависеть правильная работа программы (см. пример №4).

Код Результат pythonCodes
# Создаем пустой список.
li = []

# Определяем польз. функцию.
def my_func(x):
    li.append(x)
              
# Просим вычислить выражение.
True or my_func(5)
# Выведет [], т.к. my_func не вызывалась.
print(li)
          
# Просим вычислить выражение.
False or my_func(5)
# Выведет [5], т.к. вызов my_func(5) был.
print(li) 
[]
[5]












		
			

Пример №4. Особенности использования логических операторов.

Тип NoneType в Python

Специальная константа None, означающая отсутствие значения, является в Python единственным представителем типа данных NoneType. Обычно ее используют для инициализации переменных и объектов, которым значения потребуется присвоить позже. Кроме того, None неявно возвращается функциями, у которых отсутствует оператор return (см. пример №5).

Код Результат pythonCodes
# Инициализируем переменную.
n = None
		
# Напишем функцию.
def my_func(n):
	# Выведет NoneType.
	print('type(n) ->', type(n))	

# Вызываем ф-цию, а рез-т вызова сохраняем. 
res = my_func(n)

# None, т.к. оператор return в ф-ции отсутствует.
print('my_func(n) ->', res)
type(n) -> <class 'NoneType'>
my_func(n) -> None









		
			

Пример №5. Тип NoneType в Python.

Опять же, как и в случае с логическими константами, имя None чуствительно к регистру символов, поэтому использовать его нужно именно в указанном здесь виде.

Что касается проверки переменной на значение None, то сделать это надежнее всего при помощи известного нам оператора is. Например, для инструкции n = None проверка n is None вернет True.


Помогите проекту, подпишитесь!

Подписка на учебные материалы сайта оформляется сроком на один год и стоит около 15 у.е. После подписки вам станут доступны следующие возможности.

  • Доступ ко всем ответам на вопросы и решениям задач.
  • Возможность загрузки учебных кодов и программ на свой компьютер.
  • Доступ ко всем тренажерам и видеоурокам (когда появятся).
  • Возможность внести свой скромный вклад в развитие проекта и мира во всем мире, а также выразить свою благодарить автору за его труд. Нам очень нужна ваша поддержка!

Python для начинающих
На страницу подписки

Вопросы и задания для самоконтроля

1. Выберите верные варианты написания имен: NONE, True, false, None, true, False. Объясните свой ответ. Показать решение.

Ответ. В Питоне имена переменных и констант регистрозависимы и должны использо­ваться в следующем виде: True, False, None.

2. Установите соответствия между константами None, True, False и утверж­де­ниями «Истина», «Ложь», «Нет значения». Показать решение.

Ответ. True ⇨ «Истина», False ⇨ «Ложь», None ⇨ «Нет значения».

3. Посчитайте устно, а затем проверьте себя программно: 3 + False, True*5 + False, 7 - False*5. Показать решение.

Решение Результат pythonCodes
# Вычислим и выведем рез-ты выражений.
res_1 = 3 + False
print('3 + False =', res_1, end='\n\n')	
res_2 = True*5 + False
print('True*5 + False =', res_2, end='\n\n')	
res_3 = 7 - False*5
print('7 - False*5 =', res_3)
3 + False = 3

True*5 + False = 5

7 - False*5 = 7

			

4. Какой результат вернут выражения: 5 < 7, 5 > 7, 5 <= 7. Показать решение.

Ответ. 5 < 7True, 5 > 7False, 5 <= 7True.

5. Будет ли осуществлен вызов функций в следующих примерах: False and foo(), not True or foo(), 1 and foo()? Показать решение.

Ответ. Вызов функций будет осуществлен во втором и третьем примерах, т.к. после обработки левой части условий конечный результат вычислений еще будет неопределенным. В ответе мы учли, что во втором примере not True == False, а в третьем примере 1 == True.

6. Дополнительные упражнения и задачи по теме расположены в разделе «Логические выражения» нашего сборника задач и упражнений по языку программирования Python.

Быстрый переход к другим страницам