None och Binärdata
Riktiga program hanterar saknade värden och binärdata. Använd None för att markera "inget värde", och bytes/bytearray för rå binärdata. Känn till när varje typ är lämplig och hur du säkert konverterar mellan text och bytes.
None för "Inget värde"
None är ett enda objekt som betyder "inget här".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Använd is None istället för sanningsvärdeskontroller, eftersom 0 och "" också är falska.
123value = 0 print(not value) # True print(value is None) # False
Standardvärden och reservvärden
None används som en tydlig markering för att ett värde avsiktligt saknas. Det gör det möjligt att skilja mellan "inget värde angivet" och giltiga värden som 0 eller "", vilket gör standardvärden och reservvärden säkrare och mer förutsägbara.
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
Funktioner och parametrar
Detta exempel visar hur en funktion använder en parameter satt till None som en signal om att ingen tagg angavs. Det gör det möjligt för funktionen att tilldela ett säkert standardvärde samtidigt som anroparen kan åsidosätta det vid behov.
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 och bytearray för binärdata
str lagrar text, bytes och bytearray lagrar råa bytevärden.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Kodning och avkodning
Kodning omvandlar text till byte så att den kan lagras eller överföras på ett tillförlitligt sätt, medan avkodning återställer dessa byte till läsbar text. Att använda en definierad kodning som UTF-8 säkerställer att tecken bevaras korrekt.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Blanda text och bytes
Text (str) och bytes (bytes) kan inte kombineras direkt eftersom de representerar olika datatyper. För att blanda dem på ett säkert sätt måste du först konvertera texten till bytes med en explicit kodning.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Skillnader i längd
Vissa tecken tar upp ett textelement men flera bytes, så deras längd i str och i kodad form kan skilja sig åt. Detta sker eftersom kodningar som UTF-8 kan använda mer än en byte för att representera ett enda tecken.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Filer
Binära filer måste öppnas i "rb"-läge så att deras råa byte läses exakt som de är lagrade. Detta förhindrar att Python försöker tolka datan som text.
# with open("example.png", "rb") as f:
# blob = f.read()
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Fantastiskt!
Completion betyg förbättrat till 3.45
None och Binärdata
Svep för att visa menyn
Riktiga program hanterar saknade värden och binärdata. Använd None för att markera "inget värde", och bytes/bytearray för rå binärdata. Känn till när varje typ är lämplig och hur du säkert konverterar mellan text och bytes.
None för "Inget värde"
None är ett enda objekt som betyder "inget här".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Använd is None istället för sanningsvärdeskontroller, eftersom 0 och "" också är falska.
123value = 0 print(not value) # True print(value is None) # False
Standardvärden och reservvärden
None används som en tydlig markering för att ett värde avsiktligt saknas. Det gör det möjligt att skilja mellan "inget värde angivet" och giltiga värden som 0 eller "", vilket gör standardvärden och reservvärden säkrare och mer förutsägbara.
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
Funktioner och parametrar
Detta exempel visar hur en funktion använder en parameter satt till None som en signal om att ingen tagg angavs. Det gör det möjligt för funktionen att tilldela ett säkert standardvärde samtidigt som anroparen kan åsidosätta det vid behov.
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 och bytearray för binärdata
str lagrar text, bytes och bytearray lagrar råa bytevärden.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Kodning och avkodning
Kodning omvandlar text till byte så att den kan lagras eller överföras på ett tillförlitligt sätt, medan avkodning återställer dessa byte till läsbar text. Att använda en definierad kodning som UTF-8 säkerställer att tecken bevaras korrekt.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Blanda text och bytes
Text (str) och bytes (bytes) kan inte kombineras direkt eftersom de representerar olika datatyper. För att blanda dem på ett säkert sätt måste du först konvertera texten till bytes med en explicit kodning.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Skillnader i längd
Vissa tecken tar upp ett textelement men flera bytes, så deras längd i str och i kodad form kan skilja sig åt. Detta sker eftersom kodningar som UTF-8 kan använda mer än en byte för att representera ett enda tecken.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Filer
Binära filer måste öppnas i "rb"-läge så att deras råa byte läses exakt som de är lagrade. Detta förhindrar att Python försöker tolka datan som text.
# with open("example.png", "rb") as f:
# blob = f.read()
Tack för dina kommentarer!