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. Comprendre 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 évalué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' (maybe wrong) 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 possibilité de 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
bytes et bytearray pour les 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 tel que UTF-8 garantit la préservation correcte des caractères.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Mélange de texte et d’octets
Le texte (str) et les octets (bytes) ne peuvent pas être combinés directement car ils représentent des types de données différents. Pour les mélanger en toute sécurité, il est nécessaire de convertir d'abord le texte en octets à l’aide d’un encodage explicite.
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 seul élément texte mais plusieurs octets, de sorte que leur longueur en str et sous forme encodée peut différer. Cela s’explique par le fait 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 tels qu'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
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?
Génial!
Completion taux amélioré à 3.45
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. Comprendre 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 évalué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' (maybe wrong) 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 possibilité de 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
bytes et bytearray pour les 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 tel que UTF-8 garantit la préservation correcte des caractères.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Mélange de texte et d’octets
Le texte (str) et les octets (bytes) ne peuvent pas être combinés directement car ils représentent des types de données différents. Pour les mélanger en toute sécurité, il est nécessaire de convertir d'abord le texte en octets à l’aide d’un encodage explicite.
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 seul élément texte mais plusieurs octets, de sorte que leur longueur en str et sous forme encodée peut différer. Cela s’explique par le fait 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 tels qu'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 !