Données None et Binaires
Glissez pour afficher le menu
Les programmes réels gèrent les valeurs manquantes et les données binaires. Utiliser None pour indiquer « aucune valeur », et bytes/bytearray pour le contenu binaire brut. Savoir quand chaque type est approprié et comment convertir en toute sécurité entre texte et octets.
None pour « aucune valeur »
None est un objet unique signifiant « rien ici ».
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Utiliser is None au lieu de vérifications de véracité, car 0 et "" sont également considérés comme faux.
123value = 0 print(not value) # True print(value is None) # False
Valeurs par défaut et solutions de repli
None est utilisé comme un indicateur clair qu'une valeur est intentionnellement absente. Cela permet de distinguer entre « aucune valeur fournie » et des valeurs valides comme 0 ou "", rendant l'utilisation de valeurs par défaut et de solutions de repli plus sûre et plus prévisible.
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
Fonctions et paramètres
Cet exemple montre comment une fonction utilise un paramètre défini à None comme signal qu'aucun tag n'a été fourni. Cela permet à la fonction d'attribuer une valeur par défaut sûre tout en laissant l'appelant la remplacer si nécessaire.
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
Données binaires
str contient du texte, bytes et bytearray contiennent des valeurs d'octets brutes.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Encodage et décodage
L'encodage convertit le texte en octets afin qu'il puisse être stocké ou transféré de manière fiable, tandis que le décodage restaure ces octets en texte lisible. L'utilisation d'un encodage défini comme UTF-8 garantit la préservation correcte des caractères.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Données binaires en pratique
Utiliser bytes et bytearray pour la gestion des informations binaires brutes. Ces types sont essentiels pour les tâches où les données ne sont pas uniquement du texte, telles que :
- Lecture et écriture de fichiers en mode binaire (comme les images, fichiers audio ou exécutables) ;
- Envoi et réception de données sur les réseaux, où il est nécessaire de transmettre des séquences d’octets précises ;
- Analyse ou construction de protocoles binaires, par exemple lors de la communication avec du matériel ou des API bas niveau.
bytes vs bytearray
- Les objets
bytessont immuables : leur contenu ne peut pas être modifié après création. À utiliser lorsque des données binaires fixes sont nécessaires, comme le contenu de fichiers ou des empreintes cryptographiques ; - Les objets
bytearraysont muables : leur contenu peut être modifié sur place. Utile pour construire ou modifier des données binaires avant de les enregistrer ou de les envoyer.
Exemple : modification de données binaires
# Create a bytes object (immutable)
data = b"hello"
# Create a mutable copy
data_mutable = bytearray(data)
data_mutable[0] = 72 # Change 'h' (104) to 'H' (72)
print(data_mutable) # bytearray(b'Hello')
Conversion entre bytes et bytearray
- Convertir
bytesenbytearraypour permettre les modifications :
b = b"data"
ba = bytearray(b)
- Convertir
bytearrayenbytespour le stockage ou la transmission :
ba = bytearray(b"abc")
b = bytes(ba)
Encodage et décodage
- Utiliser
.encode()sur une chaîne de caractères pour obtenir un objetbytesavec un encodage spécifique (comme UTF-8) ; - Utiliser
.decode()sur un objetbytesoubytearraypour obtenir une chaîne de caractères.
Ceci est crucial lors du travail avec des fichiers ou des données réseau, où il est fréquent de recevoir ou d’envoyer des octets bruts et de devoir les convertir en texte lisible ou inversement.
Cas d’utilisation typiques
- Entrées/sorties de fichiers :
- Ouvrir les fichiers en mode binaire (
"rb"ou"wb") pour lire ou écrire des octets exacts.
- Ouvrir les fichiers en mode binaire (
- Données réseau :
- La communication via sockets envoie et reçoit des données sous forme d’octets.
- Protocoles binaires :
- Construire ou analyser des paquets en utilisant
bytearraypour des modifications efficaces sur place.
- Construire ou analyser des paquets en utilisant
Comprendre quand utiliser chaque type permet d’écrire du code robuste pour la gestion de données dans des situations réelles.
Cas d’utilisation typiques de Bytes et Bytearray
Utiliser bytes et bytearray lors du traitement direct de données binaires brutes, plutôt que du texte. Ces types sont essentiels dans plusieurs scénarios :
- Lecture ou écriture de fichiers binaires, tels que des images, fichiers audio ou exécutables ;
- Gestion de données réseau, car les sockets envoient et reçoivent des octets, et non des chaînes de caractères ;
- Interaction avec des protocoles binaires, où il faut construire ou analyser des messages sous forme de séquences d’octets.
bytes est une séquence immuable, ce qui signifie que son contenu ne peut pas être modifié après création. Idéal pour garantir l’intégrité des données, par exemple lors de la lecture d’un fichier ou de la réception d’un paquet réseau.
bytearray est muable, permettant de modifier son contenu sur place. Utiliser bytearray pour construire un message, modifier une partie d’un tampon ou manipuler efficacement des données binaires avant de les envoyer ou de les enregistrer.
Quand utiliser chaque type :
- Utiliser
bytespour des données binaires fixes et en lecture seule, comme le contenu de fichiers ou des messages réseau qui ne doivent pas être modifiés ; - Utiliser
bytearraylorsque les données binaires doivent être modifiées, complétées ou manipulées avant un traitement ou une transmission ultérieure.
Conversion entre bytes et bytearray
Il est facile de convertir entre les objets bytes (immuables) et bytearray (muables) en Python. Cela permet de choisir le type adapté à chaque besoin—bytes pour des données fixes, bytearray lorsque le contenu doit être modifié.
- Utiliser le constructeur
bytes()pour transformer unbytearrayen objetbytesimmuable ; - Utiliser le constructeur
bytearray()pour créer une copie muable à partir d’un objetbytes.
Ceci est utile lorsqu’il faut modifier des données binaires (avec bytearray), puis les verrouiller (avec bytes) pour un stockage ou une transmission sécurisée.
raw = bytearray(b"data")
raw[0] = 68 # Change first byte to 'D'
locked = bytes(raw) # Convert to immutable bytes
b = b"example"
mutable = bytearray(b) # Convert to mutable bytearray
mutable.append(33) # Add '!' (ASCII 33)
Une fois converti en bytes, le contenu ne peut plus être modifié. Utiliser bytearray pour éditer les données binaires avant de les finaliser en tant que bytes.
1234567891011# Convert bytes to bytearray b = b"hello" ba = bytearray(b) # Modify the bytearray (change 'h' to 'H') ba[0] = ord('H') print(ba) # bytearray(b'Hello') # Convert bytearray back to bytes b2 = bytes(ba) print(b2) # b'Hello'
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Différences de longueur
Certains caractères occupent un élément texte mais plusieurs octets, donc leur longueur en str et sous forme encodée peut différer. Cela se produit parce que des encodages comme UTF-8 peuvent utiliser plus d'un octet pour représenter un seul caractère.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Fichiers
Les fichiers binaires doivent être ouverts en mode "rb" afin que leurs octets bruts soient lus exactement comme ils sont stockés. Cela empêche Python d'essayer d'interpréter les données comme du texte.
# with open("example.png", "rb") as f:
# blob = f.read()
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Données None et Binaires
Les programmes réels gèrent les valeurs manquantes et les données binaires. Utiliser None pour indiquer « aucune valeur », et bytes/bytearray pour le contenu binaire brut. Savoir quand chaque type est approprié et comment convertir en toute sécurité entre texte et octets.
None pour « aucune valeur »
None est un objet unique signifiant « rien ici ».
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Utiliser is None au lieu de vérifications de véracité, car 0 et "" sont également considérés comme faux.
123value = 0 print(not value) # True print(value is None) # False
Valeurs par défaut et solutions de repli
None est utilisé comme un indicateur clair qu'une valeur est intentionnellement absente. Cela permet de distinguer entre « aucune valeur fournie » et des valeurs valides comme 0 ou "", rendant l'utilisation de valeurs par défaut et de solutions de repli plus sûre et plus prévisible.
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
Fonctions et paramètres
Cet exemple montre comment une fonction utilise un paramètre défini à None comme signal qu'aucun tag n'a été fourni. Cela permet à la fonction d'attribuer une valeur par défaut sûre tout en laissant l'appelant la remplacer si nécessaire.
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
Données binaires
str contient du texte, bytes et bytearray contiennent des valeurs d'octets brutes.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Encodage et décodage
L'encodage convertit le texte en octets afin qu'il puisse être stocké ou transféré de manière fiable, tandis que le décodage restaure ces octets en texte lisible. L'utilisation d'un encodage défini comme UTF-8 garantit la préservation correcte des caractères.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Données binaires en pratique
Utiliser bytes et bytearray pour la gestion des informations binaires brutes. Ces types sont essentiels pour les tâches où les données ne sont pas uniquement du texte, telles que :
- Lecture et écriture de fichiers en mode binaire (comme les images, fichiers audio ou exécutables) ;
- Envoi et réception de données sur les réseaux, où il est nécessaire de transmettre des séquences d’octets précises ;
- Analyse ou construction de protocoles binaires, par exemple lors de la communication avec du matériel ou des API bas niveau.
bytes vs bytearray
- Les objets
bytessont immuables : leur contenu ne peut pas être modifié après création. À utiliser lorsque des données binaires fixes sont nécessaires, comme le contenu de fichiers ou des empreintes cryptographiques ; - Les objets
bytearraysont muables : leur contenu peut être modifié sur place. Utile pour construire ou modifier des données binaires avant de les enregistrer ou de les envoyer.
Exemple : modification de données binaires
# Create a bytes object (immutable)
data = b"hello"
# Create a mutable copy
data_mutable = bytearray(data)
data_mutable[0] = 72 # Change 'h' (104) to 'H' (72)
print(data_mutable) # bytearray(b'Hello')
Conversion entre bytes et bytearray
- Convertir
bytesenbytearraypour permettre les modifications :
b = b"data"
ba = bytearray(b)
- Convertir
bytearrayenbytespour le stockage ou la transmission :
ba = bytearray(b"abc")
b = bytes(ba)
Encodage et décodage
- Utiliser
.encode()sur une chaîne de caractères pour obtenir un objetbytesavec un encodage spécifique (comme UTF-8) ; - Utiliser
.decode()sur un objetbytesoubytearraypour obtenir une chaîne de caractères.
Ceci est crucial lors du travail avec des fichiers ou des données réseau, où il est fréquent de recevoir ou d’envoyer des octets bruts et de devoir les convertir en texte lisible ou inversement.
Cas d’utilisation typiques
- Entrées/sorties de fichiers :
- Ouvrir les fichiers en mode binaire (
"rb"ou"wb") pour lire ou écrire des octets exacts.
- Ouvrir les fichiers en mode binaire (
- Données réseau :
- La communication via sockets envoie et reçoit des données sous forme d’octets.
- Protocoles binaires :
- Construire ou analyser des paquets en utilisant
bytearraypour des modifications efficaces sur place.
- Construire ou analyser des paquets en utilisant
Comprendre quand utiliser chaque type permet d’écrire du code robuste pour la gestion de données dans des situations réelles.
Cas d’utilisation typiques de Bytes et Bytearray
Utiliser bytes et bytearray lors du traitement direct de données binaires brutes, plutôt que du texte. Ces types sont essentiels dans plusieurs scénarios :
- Lecture ou écriture de fichiers binaires, tels que des images, fichiers audio ou exécutables ;
- Gestion de données réseau, car les sockets envoient et reçoivent des octets, et non des chaînes de caractères ;
- Interaction avec des protocoles binaires, où il faut construire ou analyser des messages sous forme de séquences d’octets.
bytes est une séquence immuable, ce qui signifie que son contenu ne peut pas être modifié après création. Idéal pour garantir l’intégrité des données, par exemple lors de la lecture d’un fichier ou de la réception d’un paquet réseau.
bytearray est muable, permettant de modifier son contenu sur place. Utiliser bytearray pour construire un message, modifier une partie d’un tampon ou manipuler efficacement des données binaires avant de les envoyer ou de les enregistrer.
Quand utiliser chaque type :
- Utiliser
bytespour des données binaires fixes et en lecture seule, comme le contenu de fichiers ou des messages réseau qui ne doivent pas être modifiés ; - Utiliser
bytearraylorsque les données binaires doivent être modifiées, complétées ou manipulées avant un traitement ou une transmission ultérieure.
Conversion entre bytes et bytearray
Il est facile de convertir entre les objets bytes (immuables) et bytearray (muables) en Python. Cela permet de choisir le type adapté à chaque besoin—bytes pour des données fixes, bytearray lorsque le contenu doit être modifié.
- Utiliser le constructeur
bytes()pour transformer unbytearrayen objetbytesimmuable ; - Utiliser le constructeur
bytearray()pour créer une copie muable à partir d’un objetbytes.
Ceci est utile lorsqu’il faut modifier des données binaires (avec bytearray), puis les verrouiller (avec bytes) pour un stockage ou une transmission sécurisée.
raw = bytearray(b"data")
raw[0] = 68 # Change first byte to 'D'
locked = bytes(raw) # Convert to immutable bytes
b = b"example"
mutable = bytearray(b) # Convert to mutable bytearray
mutable.append(33) # Add '!' (ASCII 33)
Une fois converti en bytes, le contenu ne peut plus être modifié. Utiliser bytearray pour éditer les données binaires avant de les finaliser en tant que bytes.
1234567891011# Convert bytes to bytearray b = b"hello" ba = bytearray(b) # Modify the bytearray (change 'h' to 'H') ba[0] = ord('H') print(ba) # bytearray(b'Hello') # Convert bytearray back to bytes b2 = bytes(ba) print(b2) # b'Hello'
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Différences de longueur
Certains caractères occupent un élément texte mais plusieurs octets, donc leur longueur en str et sous forme encodée peut différer. Cela se produit parce que des encodages comme UTF-8 peuvent utiliser plus d'un octet pour représenter un seul caractère.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Fichiers
Les fichiers binaires doivent être ouverts en mode "rb" afin que leurs octets bruts soient lus exactement comme ils sont stockés. Cela empêche Python d'essayer d'interpréter les données comme du texte.
# with open("example.png", "rb") as f:
# blob = f.read()
Merci pour vos commentaires !