Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Données None et Binaires | Interactions Entre Types Différents
Types de Données en Python

bookDonnées None et Binaires

Les programmes réels gèrent les valeurs manquantes et les données brutes provenant de fichiers ou de réseaux. Utiliser None pour représenter « aucune valeur », et bytes ou bytearray pour les données binaires. Ce chapitre explique quand utiliser chacun et comment passer en toute sécurité du texte aux octets.

None pour « aucune valeur »

None est un objet spécial unique qui signifie « rien ici ».

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None est une valeur fausse, mais 0 et "" le sont aussi. Préférer is None lorsque l’on veut vraiment signifier « valeur manquante ».

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Valeurs par défaut et solutions de repli

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Fonctions et paramètres

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes et bytearray pour les données binaires

Le texte utilise str et contient des caractères Unicode. Les données binaires utilisent bytes ou bytearray et contiennent des valeurs brutes d'octets de 0 à 255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Conversion entre texte et octets : Encoder et décoder

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Mélange de texte et d'octets - Invalide sans conversion

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Les longueurs peuvent différer

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

Fichiers

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. Quelle vérification détecte correctement une valeur manquante ?

2. Quelle ligne combine correctement du texte avec un préfixe d'octets ?

3. Quelle affirmation est correcte ?

question mark

Quelle vérification détecte correctement une valeur manquante ?

Select the correct answer

question mark

Quelle ligne combine correctement du texte avec un préfixe d'octets ?

Select the correct answer

question mark

Quelle affirmation est correcte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain when to use `None` versus other falsey values?

How do I safely provide default values for function parameters?

What are the main differences between `bytes` and `bytearray`?

Awesome!

Completion rate improved to 5

bookDonnées None et Binaires

Glissez pour afficher le menu

Les programmes réels gèrent les valeurs manquantes et les données brutes provenant de fichiers ou de réseaux. Utiliser None pour représenter « aucune valeur », et bytes ou bytearray pour les données binaires. Ce chapitre explique quand utiliser chacun et comment passer en toute sécurité du texte aux octets.

None pour « aucune valeur »

None est un objet spécial unique qui signifie « rien ici ».

12345678910111213
# Basic checks result = None email = None print("result is None:", result is None) # True print("email is None:", email is None) # True # Identity checks are the reliable way if result is None: print("No result yet") if email is not None: print("Email present") else: print("Email missing")
copy

None est une valeur fausse, mais 0 et "" le sont aussi. Préférer is None lorsque l’on veut vraiment signifier « valeur manquante ».

123
value = 0 print("not value:", not value) # True - but 0 is a valid value print("value is None:", value is None) # False - correctly distinguishes 0 from missing
copy

Valeurs par défaut et solutions de repli

1234567891011
x = None safe_or = x or "unknown" # replaces any falsey value safe_none_only = "unknown" if x is None else x print("x=None, x or 'unknown':", safe_or) # 'unknown' print("x=None, None-only fallback:", safe_none_only) # 'unknown' x = 0 safe_or = x or "unknown" safe_none_only = "unknown" if x is None else x print("x=0, x or 'unknown':", safe_or) # 'unknown' - maybe not desired print("x=0, None-only fallback:", safe_none_only) # 0 - preserves valid zero
copy

Fonctions et paramètres

12345678910111213
def find_user(name): # returns None if not found return None def add_tag(text, tag=None): if tag is None: tag = "general" return f"[{tag}] {text}" user = find_user("Ada") print("user is None:", user is None) # True print(add_tag("hello")) # "[general] hello" print(add_tag("hello", tag="news")) # "[news] hello"
copy

bytes et bytearray pour les données binaires

Le texte utilise str et contient des caractères Unicode. Les données binaires utilisent bytes ou bytearray et contiennent des valeurs brutes d'octets de 0 à 255.

123456789
# Creating binary data b1 = b"hello" # bytes literal b2 = bytes([72, 105]) # b"Hi" buf = bytearray(b"abc") # mutable buf[0] = 65 # now b"Abc" print("b1:", b1, type(b1)) # b'hello' <class 'bytes'> print("b2:", b2, type(b2)) # b'Hi' <class 'bytes'> print("buf:", buf, type(buf)) # bytearray(b'Abc') <class 'bytearray'>
copy

Conversion entre texte et octets : Encoder et décoder

1234567
text = "café" data = text.encode("utf-8") # to bytes back = data.decode("utf-8") # back to str print("text:", text, type(text)) # café <class 'str'> print("data:", data, type(data)) # b'caf\xc3\xa9' <class 'bytes'> print("back:", back, type(back)) # café <class 'str'>
copy

Mélange de texte et d'octets - Invalide sans conversion

123456789
# Non-valid operation with explicit error print try: bad = b"ID:" + "123" # bytes + str - not allowed except TypeError as e: print("TypeError when mixing bytes and str:", e) # Correct combination ok = b"ID:" + "123".encode("utf-8") print("combined bytes:", ok) # b'ID:123'
copy

Les longueurs peuvent différer

123
ch = "é" print("len('é') as str:", len(ch)) # 1 character print("len('é' encoded):", len(ch.encode("utf-8")))# 2 bytes
copy

Fichiers

# Binary files yield bytes
# with open("example.png", "rb") as f:
#     blob = f.read()

1. Quelle vérification détecte correctement une valeur manquante ?

2. Quelle ligne combine correctement du texte avec un préfixe d'octets ?

3. Quelle affirmation est correcte ?

question mark

Quelle vérification détecte correctement une valeur manquante ?

Select the correct answer

question mark

Quelle ligne combine correctement du texte avec un préfixe d'octets ?

Select the correct answer

question mark

Quelle affirmation est correcte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 3
some-alt