Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära None och Binärdata | Interaktioner Mellan Olika Datatyper
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Datatyper i Python

bookNone 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".

1234567
result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
copy

Använd is None istället för sanningsvärdeskontroller, eftersom 0 och "" också är falska.

123
value = 0 print(not value) # True print(value is None) # False
copy

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.

1234567
x = 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
copy

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.

1234567
def 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
copy

bytes och bytearray för binärdata

str lagrar text, bytes och bytearray lagrar råa bytevärden.

1234
b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
copy

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.

123
text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
copy

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.

123456
try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
copy

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.

123
ch = "é" len(ch) # 1 len(ch.encode()) # 2
copy

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()
question mark

Vilken kontroll upptäcker korrekt ett saknat värde?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookNone 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".

1234567
result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
copy

Använd is None istället för sanningsvärdeskontroller, eftersom 0 och "" också är falska.

123
value = 0 print(not value) # True print(value is None) # False
copy

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.

1234567
x = 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
copy

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.

1234567
def 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
copy

bytes och bytearray för binärdata

str lagrar text, bytes och bytearray lagrar råa bytevärden.

1234
b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
copy

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.

123
text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
copy

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.

123456
try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
copy

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.

123
ch = "é" len(ch) # 1 len(ch.encode()) # 2
copy

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()
question mark

Vilken kontroll upptäcker korrekt ett saknat värde?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
some-alt