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' (maybe wrong) 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
bytes та bytearray для бінарних даних
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()
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain more about when to use None versus other default values?
How do I safely convert between text and bytes in Python?
What are some common mistakes when handling binary data and missing values?
Чудово!
Completion показник покращився до 3.45
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' (maybe wrong) 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
bytes та bytearray для бінарних даних
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()
Дякуємо за ваш відгук!