None та Бінарні Дані
Свайпніть щоб показати меню
Реальні програми обробляють відсутні значення та бінарні дані. Використовуйте None для позначення "немає значення", а bytes/bytearray — для необробленого бінарного вмісту. Важливо знати, коли кожен тип доречний і як безпечно конвертувати між текстом і байтами.
None для "Відсутнє значення"
None — це єдиний об'єкт, що означає "тут нічого немає".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Використовуйте is None замість перевірок на істинність, оскільки 0 та "" також є хибними значеннями.
123value = 0 print(not value) # True print(value is None) # False
Значення за замовчуванням і запасні варіанти
None використовується як чіткий маркер того, що значення навмисно відсутнє. Це дозволяє відрізняти "значення не надано" від коректних значень, таких як 0 або "", роблячи використання значень за замовчуванням і запасних варіантів безпечнішим і передбачуванішим.
1234567x = None print(x or "unknown") # 'unknown' print("unknown" if x is None else x) x = 0 print(x or "unknown") # 'unknown' print("unknown" if x is None else x) # 0
Функції та параметри
Цей приклад демонструє, як функція використовує параметр зі значенням None як сигнал про те, що тег не був наданий. Це дозволяє функції призначити безпечне значення за замовчуванням, водночас дозволяючи виклику встановити власне значення за потреби.
1234567def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" print(add_tag("hello")) # [general] hello print(add_tag("hello", "news")) # [news] hello
Бінарні дані
str містить текст, bytes і bytearray містять необроблені байтові значення.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Кодування та декодування
Кодування перетворює текст у байти для надійного зберігання або передачі, а декодування відновлює ці байти у читабельний текст. Використання визначеного кодування, наприклад UTF-8, гарантує правильне збереження символів.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Змішування тексту та байтів
Текст (str) і байти (bytes) не можна поєднувати безпосередньо, оскільки вони представляють різні типи даних. Щоб безпечно їх змішувати, спочатку потрібно явно перетворити текст у байти за допомогою кодування.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Відмінності у довжині
Деякі символи займають один текстовий елемент, але кілька байтів, тому їхня довжина у str та у закодованому вигляді може відрізнятися. Це відбувається тому, що кодування, такі як UTF-8, можуть використовувати більше одного байта для представлення одного символу.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Файли
Бінарні файли необхідно відкривати в режимі "rb", щоб їхні сирі байти зчитувалися точно так, як збережено. Це запобігає спробам Python інтерпретувати дані як текст.
# with open("example.png", "rb") as f:
# blob = f.read()
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат