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()
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
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' 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()
Дякуємо за ваш відгук!