Статьи

Учебные материалы по языку Python — от основ до продвинутых тем

NoneType и bool

Страница 19 из 34 · 2026-10-26 · 2 мин чтения

NoneType

None — единственный экземпляр класса NoneType. Он обозначает отсутствие значения:

print(type(None))print(None is None)print(bool(None))

Функция без return возвращает None. Для проверки используйте is, а не ==:

value = Noneif value is None:    print("значения нет")if value is not None:    print("значение есть")

Типичное применение — значение по умолчанию для изменяемых аргументов:

def collect(item, bucket=None):    if bucket is None:        bucket = []    bucket.append(item)    return bucket

Ellipsis и NotImplemented

Рядом с None стоят ещё два встроенных синглтона:

print(type(...))print(type(NotImplemented))
  • ... (Ellipsis) — заглушка в теле функции или маркер в срезах (например, в NumPy) и в аннотациях
  • NotImplemented — значение, которое возвращают бинарные специальные методы, если операция не поддерживается для данного типа операнда
class Meters:    def __init__(self, value):        self.value = value    def __add__(self, other):        if not isinstance(other, Meters):            return NotImplemented        return Meters(self.value + other.value)

bool

bool — подкласс int с ровно двумя экземплярами: True и False.

print(isinstance(True, int))print(True + True)print(True * 10)print(int(False))

Результат: True, 2, 10, 0.

Правила истинности

Ложными считаются:

  • None и False
  • нулевые числа: 0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • пустые последовательности и коллекции: "", [], (), {}, set(), range(0)
  • объекты, у которых __bool__ возвращает False или __len__ возвращает 0

Всё остальное истинно.

print(bool([]))print(bool([0]))print(bool(""))print(bool(" "))print(bool(0.0))

Результат: False, True, False, True, False.

Логические функции

nums = [1, 2, 3, 0]print(any(nums))print(all(nums))print(any(n > 2 for n in nums))print(all(n >= 0 for n in nums))print(sum(n > 1 for n in nums))

Результат: True, False, True, True, 2.

Побитовые операции над bool

print(True & False)print(True | False)print(True ^ True)print(not True)

Операторы &, |, ^ на булевых значениях возвращают bool. Оператор ~ использовать нельзя: ~True равно -2, потому что это побитовое отрицание целого числа.

Задания

  1. Напишите функцию, которая возвращает первое «истинное» значение из переданных аргументов.
  2. Объясните результат выражения sum([True, True, False]).
  3. Создайте класс с методом __bool__, истинный только при непустом внутреннем списке.