None- und Binärdaten
Reale Programme verarbeiten fehlende Werte und Binärdaten. Verwenden Sie None, um "kein Wert" zu kennzeichnen, und bytes/bytearray für rohe Binärinhalte. Verstehen Sie, wann welcher Typ geeignet ist und wie Sie sicher zwischen Text und Bytes konvertieren.
None für "Kein Wert"
None ist ein einzelnes Objekt, das "nichts vorhanden" bedeutet.
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Verwenden Sie is None anstelle von Wahrheitswertprüfungen, da auch 0 und "" als "falsey" gelten.
123value = 0 print(not value) # True print(value is None) # False
Standardwerte und Rückfalloptionen
None wird als eindeutiger Marker verwendet, dass ein Wert absichtlich fehlt. Dadurch lässt sich zwischen „kein Wert angegeben“ und gültigen Werten wie 0 oder "" unterscheiden, was Standardwerte und Rückfalloptionen sicherer und vorhersehbarer macht.
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
Funktionen und Parameter
Dieses Beispiel zeigt, wie eine Funktion einen auf None gesetzten Parameter als Signal verwendet, dass kein Tag angegeben wurde. Dadurch kann die Funktion einen sicheren Standardwert zuweisen, während der Aufrufer ihn bei Bedarf überschreiben kann.
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 und bytearray für Binärdaten
str speichert Text, bytes und bytearray speichern rohe Bytewerte.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Kodierung und Dekodierung
Kodierung wandelt Text in Bytes um, sodass er zuverlässig gespeichert oder übertragen werden kann, während Dekodierung diese Bytes wieder in lesbaren Text zurückverwandelt. Die Verwendung einer definierten Kodierung wie UTF-8 stellt sicher, dass Zeichen korrekt erhalten bleiben.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Mischen von Text und Bytes
Text (str) und Bytes (bytes) können nicht direkt kombiniert werden, da sie unterschiedliche Datentypen darstellen. Um sie sicher zu mischen, muss der Text zuerst durch eine explizite Kodierung in Bytes umgewandelt werden.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Längenunterschiede
Einige Zeichen beanspruchen ein Textelement, benötigen jedoch mehrere Bytes, sodass sich ihre Länge in str und in der kodierten Form unterscheiden kann. Dies liegt daran, dass Kodierungen wie UTF-8 mehr als ein Byte zur Darstellung eines einzelnen Zeichens verwenden können.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Dateien
Binärdateien müssen im Modus "rb" geöffnet werden, damit ihre Rohbytes exakt wie gespeichert gelesen werden. Dies verhindert, dass Python versucht, die Daten als Text zu interpretieren.
# with open("example.png", "rb") as f:
# blob = f.read()
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.45
None- und Binärdaten
Swipe um das Menü anzuzeigen
Reale Programme verarbeiten fehlende Werte und Binärdaten. Verwenden Sie None, um "kein Wert" zu kennzeichnen, und bytes/bytearray für rohe Binärinhalte. Verstehen Sie, wann welcher Typ geeignet ist und wie Sie sicher zwischen Text und Bytes konvertieren.
None für "Kein Wert"
None ist ein einzelnes Objekt, das "nichts vorhanden" bedeutet.
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Verwenden Sie is None anstelle von Wahrheitswertprüfungen, da auch 0 und "" als "falsey" gelten.
123value = 0 print(not value) # True print(value is None) # False
Standardwerte und Rückfalloptionen
None wird als eindeutiger Marker verwendet, dass ein Wert absichtlich fehlt. Dadurch lässt sich zwischen „kein Wert angegeben“ und gültigen Werten wie 0 oder "" unterscheiden, was Standardwerte und Rückfalloptionen sicherer und vorhersehbarer macht.
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
Funktionen und Parameter
Dieses Beispiel zeigt, wie eine Funktion einen auf None gesetzten Parameter als Signal verwendet, dass kein Tag angegeben wurde. Dadurch kann die Funktion einen sicheren Standardwert zuweisen, während der Aufrufer ihn bei Bedarf überschreiben kann.
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 und bytearray für Binärdaten
str speichert Text, bytes und bytearray speichern rohe Bytewerte.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Kodierung und Dekodierung
Kodierung wandelt Text in Bytes um, sodass er zuverlässig gespeichert oder übertragen werden kann, während Dekodierung diese Bytes wieder in lesbaren Text zurückverwandelt. Die Verwendung einer definierten Kodierung wie UTF-8 stellt sicher, dass Zeichen korrekt erhalten bleiben.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Mischen von Text und Bytes
Text (str) und Bytes (bytes) können nicht direkt kombiniert werden, da sie unterschiedliche Datentypen darstellen. Um sie sicher zu mischen, muss der Text zuerst durch eine explizite Kodierung in Bytes umgewandelt werden.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Längenunterschiede
Einige Zeichen beanspruchen ein Textelement, benötigen jedoch mehrere Bytes, sodass sich ihre Länge in str und in der kodierten Form unterscheiden kann. Dies liegt daran, dass Kodierungen wie UTF-8 mehr als ein Byte zur Darstellung eines einzelnen Zeichens verwenden können.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Dateien
Binärdateien müssen im Modus "rb" geöffnet werden, damit ihre Rohbytes exakt wie gespeichert gelesen werden. Dies verhindert, dass Python versucht, die Daten als Text zu interpretieren.
# with open("example.png", "rb") as f:
# blob = f.read()
Danke für Ihr Feedback!