None og Binære Data
Reelle programmer håndterer manglende værdier og binære data. Brug None til at markere "ingen værdi", og bytes/bytearray til rå binært indhold. Kend hvornår hver type er passende, og hvordan du sikkert konverterer mellem tekst og bytes.
None for "Ingen værdi"
None er et enkelt objekt, der betyder "intet her".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Brug is None i stedet for sandhedsværdikontrol, da 0 og "" også er falske.
123value = 0 print(not value) # True print(value is None) # False
Standardværdier og Fallbacks
None bruges som en tydelig markering af, at en værdi bevidst mangler. Det gør det muligt at skelne mellem "ingen værdi angivet" og gyldige værdier som 0 eller "", hvilket gør standardværdier og fallbacks mere sikre og forudsigelige.
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 og parametre
Dette eksempel viser, hvordan en funktion bruger en parameter sat til None som et signal om, at der ikke blev angivet et tag. Det gør det muligt for funktionen at tildele en sikker standardværdi, samtidig med at den tillader opkaldet at tilsidesætte den, hvis det er nødvendigt.
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 og bytearray til binære data
str indeholder tekst, bytes og bytearray indeholder rå byteværdier.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Kodning og dekodning
Kodning omdanner tekst til bytes, så det kan gemmes eller overføres pålideligt, mens dekodning gendanner disse bytes til læsbar tekst. Brug af en defineret kodning som UTF-8 sikrer, at tegn bevares korrekt.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Blanding af tekst og bytes
Tekst (str) og bytes (bytes) kan ikke kombineres direkte, da de repræsenterer forskellige datatyper. For at blande dem sikkert skal teksten først konverteres til bytes ved hjælp af en eksplicit kodning.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Længdeforskelle
Nogle tegn optager ét textelement, men flere bytes, så deres længde i str og i kodet form kan variere. Dette sker, fordi kodninger som UTF-8 kan bruge mere end én byte til at repræsentere et enkelt tegn.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Filer
Binære filer skal åbnes i "rb"-tilstand, så deres rå bytes læses præcis som de er gemt. Dette forhindrer Python i at forsøge at fortolke dataene som tekst.
# with open("example.png", "rb") as f:
# blob = f.read()
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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?
Fantastisk!
Completion rate forbedret til 3.45
None og Binære Data
Stryg for at vise menuen
Reelle programmer håndterer manglende værdier og binære data. Brug None til at markere "ingen værdi", og bytes/bytearray til rå binært indhold. Kend hvornår hver type er passende, og hvordan du sikkert konverterer mellem tekst og bytes.
None for "Ingen værdi"
None er et enkelt objekt, der betyder "intet her".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Brug is None i stedet for sandhedsværdikontrol, da 0 og "" også er falske.
123value = 0 print(not value) # True print(value is None) # False
Standardværdier og Fallbacks
None bruges som en tydelig markering af, at en værdi bevidst mangler. Det gør det muligt at skelne mellem "ingen værdi angivet" og gyldige værdier som 0 eller "", hvilket gør standardværdier og fallbacks mere sikre og forudsigelige.
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 og parametre
Dette eksempel viser, hvordan en funktion bruger en parameter sat til None som et signal om, at der ikke blev angivet et tag. Det gør det muligt for funktionen at tildele en sikker standardværdi, samtidig med at den tillader opkaldet at tilsidesætte den, hvis det er nødvendigt.
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 og bytearray til binære data
str indeholder tekst, bytes og bytearray indeholder rå byteværdier.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Kodning og dekodning
Kodning omdanner tekst til bytes, så det kan gemmes eller overføres pålideligt, mens dekodning gendanner disse bytes til læsbar tekst. Brug af en defineret kodning som UTF-8 sikrer, at tegn bevares korrekt.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Blanding af tekst og bytes
Tekst (str) og bytes (bytes) kan ikke kombineres direkte, da de repræsenterer forskellige datatyper. For at blande dem sikkert skal teksten først konverteres til bytes ved hjælp af en eksplicit kodning.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Længdeforskelle
Nogle tegn optager ét textelement, men flere bytes, så deres længde i str og i kodet form kan variere. Dette sker, fordi kodninger som UTF-8 kan bruge mere end én byte til at repræsentere et enkelt tegn.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Filer
Binære filer skal åbnes i "rb"-tilstand, så deres rå bytes læses præcis som de er gemt. Dette forhindrer Python i at forsøge at fortolke dataene som tekst.
# with open("example.png", "rb") as f:
# blob = f.read()
Tak for dine kommentarer!