Класс bool() в Python, логическое значение объекта
Позволяет проверить/узнать логическое значение объекта
Синтаксис:
bool(object)
Параметры:
- object — любой объект, как строка, список, число и т. д.
Возвращаемое значение:
- bool — логическое значение указанного объекта.
Описание:
Класс bool() возвращает логическое значение указанного объекта, True или False
Объект всегда будет возвращать False , если:
- Объект пуст — [] , () , <>
- Объект — False
- Объект равен 0
- Объект — None
На практике редко вручную пользуются переменными типа bool , которые воспроизводятся логическими проверками, потому что логические результаты автоматически используются инструкциями if . else и другими средствами выбора.
Примеры проверки объекта на его логическое значение.
x = bool(10) print(x) # Вывод True x = bool(0) print(x) # Вывод False x = bool([0]) print(x) # Вывод True x = bool([]) print(x) # Вывод False
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
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-2023.
Д. П. Кириенко. Программирование на языке Python (школа 179 г. Москвы)
Операторы сравнения возвращают значения специального логического типа bool . Значения логического типа могут принимать одно из двух значений: True (истина) или False (ложь). Если преобразовать логическое True к типу int , то получится 1, а преобразование False даст 0. При обратном преобразовании число 0 преобразуется в False , а любое ненулевое число в True . При преобразовании str в bool пустая строка преобразовывается в False , а любая непустая строка в True .
Логические операторы
Иногда нужно проверить одновременно не одно, а несколько условий. Например, проверить, является ли данное число четным можно при помощи условия (n % 2 == 0) (остаток от деления n на 2 равен 0 ), а если необходимо проверить, что два данных целых числа n и m являются четными, необходимо проверить справедливость обоих условий: n % 2 == 0 и m % 2 == 0 , для чего их необходимо объединить при помощи оператора and (логическое И): n % 2 == 0 and m % 2 == 0 .
В Питоне существуют стандартные логические операторы: логическое И, логическое ИЛИ, логическое отрицание.
является бинарным оператором (то есть оператором с двумя операндами: левым и правым) и имеет вид and . Оператор and возвращает True тогда и только тогда, когда оба его операнда имеют значение True .
является бинарным оператором и возвращает True тогда и только тогда, когда хотя бы один операнд равен True . Оператор “логическое ИЛИ” имеет вид or .
(отрицание) является унарным (то есть с одним операндом) оператором и имеет вид not , за которым следует единственный операнд. Логическое НЕ возвращает True , если операнд равен False и наоборот.
Пример. Проверим, что хотя бы одно из чисел a или b оканчивается на 0:
if a % 10 == 0 or b % 10 == 0:
Проверим, что число a — положительное, а b — неотрицательное:
if a > 0 and not (b < 0):
Или можно вместо not (b < 0) записать (b >= 0) .