Тип NoneType
У Python є спеціальне значення, яке означає "нічого", "відсутність значення". Це окремий тип — NoneType
— і в Python він має лише одне значення: None
.
У цьому розділі:
Що таке None
?
None
— це єдине значення типу NoneType
. Його використовують для позначення того, що:
- значення ще не задано,
- функція нічого не повертає,
- відсутнє значення в змінній, параметрі, обʼєкті тощо.
x = None
print(type(x)) # <class 'NoneType'>
Метафора: уявіть порожню коробку. Вона існує, але в ній нічого немає — це і є 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
.