Bool python что это



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Логический тип данных bool в Python
Встроенная класс bool() может использоваться для преобразования любого значения в логическое, если это значение можно интерпретировать как значение истинности. Если аргумент опущен вернётся False .
На заметку:
Тип bool является подтипом целого int .
x = bool(10) print(x) # True x = bool('foo') print(x) # True x = bool([0, 1, 2, 3, 4, 5, 6]) print(x) # True x = bool(0) print(x) # False x = bool('') print(x) # False x = bool([]) print(x) # False
Хороший стиль программирования на Python требует избегать таких вызовов, если в этом нет особой необходимости, как чаще всего и бывает: всегда используйте только конструкцию if x и никогда не используйте конструкции:
- if bool(x):
- if x is True:
- if x == True:
- if bool(x) == True:
В то же время можно использовать вызовы bool(x) для подсчета количества истинных элементов в последовательности, например:
def count(iter): return sum(bool(x) for x in iter)
В этом примере вызов функции bool гарантирует, что каждый элемент последовательности seq будет подсчитываться со значением 0, если он ложный или со значением 1, если он истинный, поэтому функция count(iter) более универсальна по сравнению с функцией sum(iter) .
Тип bool не позволяет наследоваться. Его единственные экземпляры — False и True .
Для пользовательского объекта реализовать поведение при проверке на его истинность можно в методе bool.
x = isinstance(True, int) print(x) # True x = isinstance(False, int) print(x) # True
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Утиная типизация ‘Duck Typing’
- Что такое вызываемый объект callable?
- Как проверить тип переменной/объекта
- Логический тип данных bool
- Целые числа int
- Ограничение длины преобразования целочисленной строки
- Вещественные числа float
- Комплексные числа complex
- Типы последовательностей
- Список list
- Кортеж tuple
- Диапазон range
- Текстовые строки str
- Словарь dict
- Множество set и frozenset
- Итератор Iterator, протокол итератора
- Генератор generator и выражение yield
- Контекстный менеджер with
- Байтовые строки bytes
- Байтовый массив bytearray
- Тип memoryview, буфер обмена
- Файловый объект file object
- Универсальный псевдоним GenericAlias
- Объект объединения Union
bool
Логический тип представлен двумя постоянными значениями False и True . Значения используются для представления истинности.
my_bool_true = True
my_bool_true = bool(10)
my_bool_true = bool('some')
my_bool_false = False
my_bool_false = bool(0)
my_bool_false = bool('')
my_bool_false = bool()
Тип bool не позволяет наследоваться. Его единственные экземпляры — False и True .
Если рассматривать эти значения в числовом контексте (например, когда они используются как аргументы в арифметической операции), то ведут они себя как целые 0 и 1 соответственно.
На заметку
Данный тип является подтипом целого (int).
isinstance(True, int) # True
isinstance(False, int) # True
issubclass(bool, int) # True
Конструктор типа bool(x) может использоваться для приведения любого значения к логическому типу (если, конечно, это значение можно интерпретировать как логический тип). Если аргумент *x* ложь, или опущен вернётся False .
На заметку
Для пользовательского объекта реализовать поведение при проверке на его истинность можно в методе __bool__.
Типы bool и NoneType в Python

- Тип bool в Python
- Логические операторы в Python
- Тип 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) -> type(True) -> type(0) -> type(False) ->
Пример №2. Логический тип данных в Python (часть 2).
Как видим, булевы константы действительно можно использовать в математических выражениях на равных с числами. Точно также и в операциях сравнения можно использовать вместо констант True и False числа 1 и 0 (попробуйте заменить константы числами в первом примере). Поэтому для себя их можно считать просто именованными «ноликами» и «единичками» не забывая при этом, что мы имеем дело с отдельным типом данных.
Логические операторы в Python
Python поддерживает следующие стандартные логические операторы: and (логическое И), or (логическое ИЛИ), not (логическое НЕ). Все они используются в логических выражениях для определения того или иного хода выполнения программы в зависимости от возвращаемого выражением результата (см. таблицу №3 ).
| Пример | Название | Результат |
|---|---|---|
| not x | Логическое НЕ | True, если значение x равно False. |
| x and y | Логическое И | True, если оба значения x и y равны True. |
| x or y | Логическое ИЛИ | True, если оба значения равны True или хотя бы одно из значений x или y равно True. |
Таблица №3. Логические операторы Python.
Важно понимать, как интерпретатор обрабатывает логические выражения в общем случае. Если в выражении x or y результат вычисления операнда x будет интерпретироваться как True или в выражении x and y результат вычисления этого операнда будет интерпретироваться как False , то правый операнд, т.е. операнд y , уже вычисляться не будет. Вместо этого будет просто возвращен результат вычисления левого операнда x . В противном случае, когда в выражении x or y результат вычисления левого операнда будет интерпретироваться как False или в выражении x and y результат вычисления этого операнда будет интерпретироваться как True , интерпретатор вернет результат вычисления правого операнда, т.е. операнда y . Именно поэтому инструкции print(5 or 0) и print(0 or 5) выведут '5' , а print(0 and 5) и print(5 and 0) , выведут '0' .
Следует быть внимательным и не помещать в правый операнд код, от которого может зависеть правильная работа программы (см. пример №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)
Пример №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) -> my_func(n) -> None
Пример №5. Тип NoneType в Python.
Опять же, как и в случае с логическими константами, имя None чуствительно к регистру символов, поэтому использовать его нужно именно в указанном здесь виде.
Что касается проверки переменной на значение None , то сделать это надежнее всего при помощи известного нам оператора is . Например, для инструкции n = None проверка n is None вернет True .
Помогите проекту, подпишитесь!
Подписка на учебные материалы сайта оформляется сроком на один год и стоит около 15 у.е. 5 у.е. После подписки вам станут доступны следующие возможности.
- Доступ уже ко всем ответам тестов и решениям задач.
- Возможность загрузки учебных кодов и программ на свой компьютер. Доступ ко всем видеоурокам.
- Практически полное отключение рекламы.
- Возможность внести свой скромный вклад в развитие проекта и мира во всем мире, а также выразить свою благодарить автору за его труд. Нам очень нужна ваша поддержка!

На страницу подписки
Вопросы и задания для самоконтроля
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
5. Будет ли осуществлен вызов функций в следующих примерах: False and foo() , not True or foo() , 1 and foo() ? Показать решение.
Ответ. Вызов функций будет осуществлен во втором и третьем примерах, т.к. после обработки левой части условий конечный результат вычислений еще будет неопределенным. В ответе мы учли, что во втором примере not True == False , а в третьем примере 1 == True .
6. Укажите верный результат выполнения кода print(10 and 20) : 10 and 20 , 10 , 20 , 1 , True . Показать решение.
Ответ. Верным ответом будет 20 , т.к. согласно документации в ходе вычисления выражения x and y интерпретатор сперва вычисляет левый операнд x , возвращая результат вычислений, если он интерпретируется как False . Если же результат будет интерпретироваться как True , интерпретатор вернет результат вычисления правого операнда y . Например, print(10*0 and 20) выведет 0 , print([] and 20) выведет [] , print(False and 20) выведет False , print(True and 20) выведет 20 , print([10*0] and 20) выведет 20 , print([10*5] and 20*3) выведет 60 .
7. Дополнительные тесты по теме расположены в разделе «Логический тип» нашего сборника тестов.
8. Дополнительные упражнения и задачи по теме расположены в разделе «Логические выражения» нашего сборника задач и упражнений.
Быстрый переход к другим страницам
- Множества в Python
- Типы bool и NoneType в Python
- Приведение типов в Python
- Вернуться к оглавлению учебника
![]()
okpython.net Copyright © 2022-2024.