None och Binärdata
Riktiga program hanterar saknade värden och binär data. Använd None för att markera "inget värde", och bytes/bytearray för rå binär information. 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 värden.
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 medvetet 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' 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
Binärdata
str innehåller text, bytes och bytearray innehåller 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. Användning av 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är data. Använd None för att markera "inget värde", och bytes/bytearray för rå binär information. 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 värden.
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 medvetet 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' 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
Binärdata
str innehåller text, bytes och bytearray innehåller 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. Användning av 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!