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érité, 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 l'absence de valeur fournie 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 indiquant 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
Utilisation de 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, l'audio ou les fichiers 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 leur 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 envoyer ou de les enregistrer.
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
- Conversion de
bytesversbytearraypour permettre les modifications :
b = b"data"
ba = bytearray(b)
- Conversion de
bytearrayversbytespour 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 de la gestion d'entrées/sorties de fichiers ou de 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 :
- Ouverture de fichiers en mode binaire (
"rb"ou"wb") pour lire ou écrire des octets exacts.
- Ouverture de 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 :
- Construction ou analyse de paquets à l'aide de
bytearraypour des modifications efficaces sur place.
- Construction ou analyse de paquets à l'aide de
La compréhension du moment où 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
Utilisation de bytes et bytearray lors du traitement direct de données binaires brutes, plutôt que du texte. Ces types sont essentiels dans plusieurs situations :
- Lecture ou écriture de fichiers binaires, tels que des images, des 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 est nécessaire de construire ou d'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 sa 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 des modifications, des ajouts ou d'autres manipulations des données binaires sont nécessaires avant un traitement ou une transmission ultérieure.
Conversion entre bytes et bytearray
La conversion entre les objets bytes (immuables) et bytearray (muables) est simple 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érité, 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 l'absence de valeur fournie 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 indiquant 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
Utilisation de 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, l'audio ou les fichiers 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 leur 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 envoyer ou de les enregistrer.
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
- Conversion de
bytesversbytearraypour permettre les modifications :
b = b"data"
ba = bytearray(b)
- Conversion de
bytearrayversbytespour 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 de la gestion d'entrées/sorties de fichiers ou de 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 :
- Ouverture de fichiers en mode binaire (
"rb"ou"wb") pour lire ou écrire des octets exacts.
- Ouverture de 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 :
- Construction ou analyse de paquets à l'aide de
bytearraypour des modifications efficaces sur place.
- Construction ou analyse de paquets à l'aide de
La compréhension du moment où 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
Utilisation de bytes et bytearray lors du traitement direct de données binaires brutes, plutôt que du texte. Ces types sont essentiels dans plusieurs situations :
- Lecture ou écriture de fichiers binaires, tels que des images, des 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 est nécessaire de construire ou d'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 sa 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 des modifications, des ajouts ou d'autres manipulations des données binaires sont nécessaires avant un traitement ou une transmission ultérieure.
Conversion entre bytes et bytearray
La conversion entre les objets bytes (immuables) et bytearray (muables) est simple 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 !