Тип NoneType
У Python є спеціальне значення, яке означає «нічого», «відсутність значення». Це окремий тип — NoneType — і в Python він має лише одне значення: None.
У цьому розділі:
Що таке None?
None — це єдине значення типу NoneType. Його використовують для позначення того, що:
- значення ще не задано,
- функція нічого не повертає,
- відсутнє значення в змінній, параметрі, обʼєкті тощо.
x = None
print(type(x)) #
Метафора: уявіть порожню коробку. Вона існує, але в ній нічого немає — це і є None.
Коли використовується None?
За замовчуванням. Функція нічого не повертає — Python автоматично повертає None.
def greet():
print("Привіт!")
result = greet()
print(result) # None
Місце заповнювача (placeholder). Визначили змінну data, але значення ще невідоме:
data = None # ще немає даних
Перевірка перед виконанням:
user = None
if user is None:
print("Користувач не визначений")
Як перевіряти None?
Слід використовувати оператор is:
if value is None:
print("Порожнє значення")
❌ Не рекомендується:
if value == None: # поганий стиль
✅ Рекомендується:
if value is None: # добрий стиль
None у булевому контексті
None розглядається як False, тобто:
print(bool(None)) # False
Отже:
value = None
if not value:
print("Порожньо або None")
Але якщо важливо точно перевірити None, краще використовувати is None.
Приклади використання
Фільтрація значень. Цей код фільтрує список values, залишаючи тільки “істинні” (truthy) значення — тобто ті, які не дорівнюють False у булевому контексті.
values = [0, "", None, "text"]
filtered = list(filter(bool, values))
print(filtered) # ['text']
Значення за замовчуванням. Цей код визначає функцію connect, яка приймає один необовʼязковий параметр url. Якщо цей параметр не передано або він дорівнює None, то функція встановлює для нього значення за замовчуванням — "https://default.com". Далі функція виводить повідомлення про підключення до цього URL.
def connect(url=None):
if url is None:
url = "https://default.com"
print(f"Підключення до {url}")
Порівняння is vs ==
a = None
b = None
print(a == b) # True
print(a is b) # True
x = []
y = []
print(x == y) # True (вміст однаковий)
print(x is y) # False (різні обʼєкти)
Практичне завдання: користувач і email
Дано: email — може бути рядком або None.
Завдання: 1. Якщо email — це None, вивести: «Немає електронної пошти».
2. Інакше: «Надсилаємо листа на {email}».
email = None
if email is None:
print("Немає електронної пошти")
else:
print(f"Надсилаємо листа на {email}")
Висновки
None— це спеціальне значення типуNoneType, що означає «нічого».- У булевих виразах
NoneвважаєтьсяFalse. - Перевірку на
Noneслід робити черезis. - Широко використовується як початкове значення, індикатор відсутності або повернення з функції без
return.