None og Binære Data
Reelle programmer håndterer manglende verdier og binærdata. Bruk None for å markere "ingen verdi", og bytes/bytearray for rå binært innhold. Vær klar over når hver type er passende, og hvordan du trygt konverterer mellom tekst og bytes.
None for "Ingen verdi"
None er et enkelt objekt som betyr "ingenting her".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Bruk is None i stedet for sannhetsverdi-sjekker, siden 0 og "" også regnes som falske.
123value = 0 print(not value) # True print(value is None) # False
Standardverdier og reserveverdier
None brukes som en tydelig markør for at en verdi bevisst mangler. Dette gjør det mulig å skille mellom "ingen verdi oppgitt" og gyldige verdier som 0 eller "", noe som gjør standardverdier og reserveverdier tryggere og mer forutsigbare.
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
Funksjoner og parametere
Dette eksemplet viser hvordan en funksjon bruker en parameter satt til None som et signal om at ingen tag er oppgitt. Det lar funksjonen tildele en trygg standardverdi, samtidig som den gir brukeren mulighet til å overstyre den ved 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ære data
str inneholder tekst, bytes og bytearray inneholder rå byte-verdier.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Koding og dekoding
Koding konverterer tekst til bytes slik at den kan lagres eller overføres pålitelig, mens dekoding gjenoppretter disse bytes tilbake til lesbar tekst. Bruk av en definert koding som UTF-8 sikrer at tegnene bevares korrekt.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Blanding av tekst og bytes
Tekst (str) og bytes (bytes) kan ikke kombineres direkte fordi de representerer ulike datatyper. For å blande dem på en sikker måte, må du først konvertere teksten til bytes ved å bruke en eksplisitt koding.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Lengdeforskjeller
Noen tegn tar ett textelement, men flere bytes, så lengden i str og i kodet form kan variere. Dette skjer fordi kodinger som UTF-8 kan bruke mer enn én byte for å representere et enkelt tegn.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Filer
Binære filer må åpnes i "rb"-modus slik at råbytes leses nøyaktig som lagret. Dette forhindrer at Python prøver å tolke dataene som tekst.
with open("example.png", "rb") as f:
blob = f.read()
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 3.45
None og Binære Data
Sveip for å vise menyen
Reelle programmer håndterer manglende verdier og binærdata. Bruk None for å markere "ingen verdi", og bytes/bytearray for rå binært innhold. Vær klar over når hver type er passende, og hvordan du trygt konverterer mellom tekst og bytes.
None for "Ingen verdi"
None er et enkelt objekt som betyr "ingenting her".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Bruk is None i stedet for sannhetsverdi-sjekker, siden 0 og "" også regnes som falske.
123value = 0 print(not value) # True print(value is None) # False
Standardverdier og reserveverdier
None brukes som en tydelig markør for at en verdi bevisst mangler. Dette gjør det mulig å skille mellom "ingen verdi oppgitt" og gyldige verdier som 0 eller "", noe som gjør standardverdier og reserveverdier tryggere og mer forutsigbare.
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
Funksjoner og parametere
Dette eksemplet viser hvordan en funksjon bruker en parameter satt til None som et signal om at ingen tag er oppgitt. Det lar funksjonen tildele en trygg standardverdi, samtidig som den gir brukeren mulighet til å overstyre den ved 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ære data
str inneholder tekst, bytes og bytearray inneholder rå byte-verdier.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Koding og dekoding
Koding konverterer tekst til bytes slik at den kan lagres eller overføres pålitelig, mens dekoding gjenoppretter disse bytes tilbake til lesbar tekst. Bruk av en definert koding som UTF-8 sikrer at tegnene bevares korrekt.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Blanding av tekst og bytes
Tekst (str) og bytes (bytes) kan ikke kombineres direkte fordi de representerer ulike datatyper. For å blande dem på en sikker måte, må du først konvertere teksten til bytes ved å bruke en eksplisitt koding.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Lengdeforskjeller
Noen tegn tar ett textelement, men flere bytes, så lengden i str og i kodet form kan variere. Dette skjer fordi kodinger som UTF-8 kan bruke mer enn én byte for å representere et enkelt tegn.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Filer
Binære filer må åpnes i "rb"-modus slik at råbytes leses nøyaktig som lagret. Dette forhindrer at Python prøver å tolke dataene som tekst.
with open("example.png", "rb") as f:
blob = f.read()
Takk for tilbakemeldingene dine!