Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте None та бінарні Дані | Взаємодія Між Різними Типами Даних
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Типи даних у Python

bookNone та бінарні Дані

Реальні програми обробляють відсутні значення та бінарні дані. Використовуйте None для позначення "немає значення", а bytes/bytearray — для необробленого бінарного вмісту. Важливо знати, коли кожен тип є доречним, і як безпечно конвертувати між текстом і байтами.

None для "Відсутнього значення"

None — це єдиний об'єкт, що означає "тут нічого немає".

1234567
result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
copy

Використовуйте is None замість перевірок на істинність, оскільки 0 та "" також є хибними значеннями.

123
value = 0 print(not value) # True print(value is None) # False
copy

Значення за замовчуванням та запасні варіанти

None використовується як чіткий маркер того, що значення навмисно відсутнє. Це дозволяє розрізняти ситуації, коли "значення не надано", і дійсні значення, такі як 0 або "", роблячи використання значень за замовчуванням та запасних варіантів безпечнішим і передбачуванішим.

1234567
x = 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
copy

Функції та параметри

Цей приклад демонструє, як функція використовує параметр зі значенням None як сигнал про те, що тег не був наданий. Це дозволяє функції призначити безпечне значення за замовчуванням, водночас залишаючи можливість виклику функції з власним тегом за потреби.

1234567
def 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
copy

bytes та bytearray для бінарних даних

str зберігає текст, а bytes і bytearray містять необроблені байтові значення.

1234
b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
copy

Кодування та декодування

Кодування перетворює текст у байти для надійного зберігання або передачі, а декодування відновлює ці байти назад у читабельний текст. Використання визначеного кодування, наприклад UTF-8, гарантує правильне збереження символів.

123
text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
copy

Змішування тексту та байтів

Текст (str) і байти (bytes) не можна поєднувати безпосередньо, оскільки вони представляють різні типи даних. Щоб безпечно їх змішувати, спочатку потрібно явно перетворити текст у байти за допомогою кодування.

123456
try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
copy

Відмінності у довжині

Деякі символи займають один текстовий елемент, але кілька байтів, тому їхня довжина у str та у закодованому вигляді може відрізнятися. Це відбувається тому, що кодування, такі як UTF-8, можуть використовувати більше одного байта для представлення одного символу.

123
ch = "é" len(ch) # 1 len(ch.encode()) # 2
copy

Файли

Бінарні файли необхідно відкривати в режимі "rb", щоб їхні сирі байти зчитувалися саме так, як збережено. Це запобігає спробам Python інтерпретувати дані як текст.

# with open("example.png", "rb") as f:
#     blob = f.read()
question mark

Яка перевірка коректно визначає відсутнє значення?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

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?

bookNone та бінарні Дані

Свайпніть щоб показати меню

Реальні програми обробляють відсутні значення та бінарні дані. Використовуйте None для позначення "немає значення", а bytes/bytearray — для необробленого бінарного вмісту. Важливо знати, коли кожен тип є доречним, і як безпечно конвертувати між текстом і байтами.

None для "Відсутнього значення"

None — це єдиний об'єкт, що означає "тут нічого немає".

1234567
result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
copy

Використовуйте is None замість перевірок на істинність, оскільки 0 та "" також є хибними значеннями.

123
value = 0 print(not value) # True print(value is None) # False
copy

Значення за замовчуванням та запасні варіанти

None використовується як чіткий маркер того, що значення навмисно відсутнє. Це дозволяє розрізняти ситуації, коли "значення не надано", і дійсні значення, такі як 0 або "", роблячи використання значень за замовчуванням та запасних варіантів безпечнішим і передбачуванішим.

1234567
x = 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
copy

Функції та параметри

Цей приклад демонструє, як функція використовує параметр зі значенням None як сигнал про те, що тег не був наданий. Це дозволяє функції призначити безпечне значення за замовчуванням, водночас залишаючи можливість виклику функції з власним тегом за потреби.

1234567
def 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
copy

bytes та bytearray для бінарних даних

str зберігає текст, а bytes і bytearray містять необроблені байтові значення.

1234
b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
copy

Кодування та декодування

Кодування перетворює текст у байти для надійного зберігання або передачі, а декодування відновлює ці байти назад у читабельний текст. Використання визначеного кодування, наприклад UTF-8, гарантує правильне збереження символів.

123
text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
copy

Змішування тексту та байтів

Текст (str) і байти (bytes) не можна поєднувати безпосередньо, оскільки вони представляють різні типи даних. Щоб безпечно їх змішувати, спочатку потрібно явно перетворити текст у байти за допомогою кодування.

123456
try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
copy

Відмінності у довжині

Деякі символи займають один текстовий елемент, але кілька байтів, тому їхня довжина у str та у закодованому вигляді може відрізнятися. Це відбувається тому, що кодування, такі як UTF-8, можуть використовувати більше одного байта для представлення одного символу.

123
ch = "é" len(ch) # 1 len(ch.encode()) # 2
copy

Файли

Бінарні файли необхідно відкривати в режимі "rb", щоб їхні сирі байти зчитувалися саме так, як збережено. Це запобігає спробам Python інтерпретувати дані як текст.

# with open("example.png", "rb") as f:
#     blob = f.read()
question mark

Яка перевірка коректно визначає відсутнє значення?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 3
some-alt