None- ja Binääritiedot
Todelliset ohjelmat käsittelevät puuttuvia arvoja ja binääritietoa. Käytä None-arvoa merkitsemään "ei arvoa", ja bytes/bytearray raakadatan tallentamiseen. Tiedä, milloin kumpaakin käytetään ja miten muunnetaan turvallisesti tekstin ja tavujen välillä.
None "Ei arvoa" -tapauksissa
None on yksittäinen olio, joka tarkoittaa "ei mitään tässä".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Käytä is None totuusarvotarkistusten sijaan, koska myös 0 ja "" ovat epätosia.
123value = 0 print(not value) # True print(value is None) # False
Oletusarvot ja vararatkaisut
None toimii selkeänä merkkinä siitä, että arvo puuttuu tarkoituksella. Sen avulla voidaan erottaa tilanteet, joissa arvoa ei ole annettu, ja tapaukset, joissa arvo on esimerkiksi 0 tai "". Tämä tekee oletusarvoista ja vararatkaisuista turvallisempia ja ennustettavampia.
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
Funktiot ja parametrit
Tämä esimerkki havainnollistaa, kuinka funktio käyttää parametria, jonka arvoksi on asetettu None, merkkinä siitä, ettei tunnistetta ole annettu. Tämä mahdollistaa turvallisen oletusarvon asettamisen, mutta antaa kutsujalle mahdollisuuden ohittaa oletus tarvittaessa.
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 ja bytearray binääridatalle
str sisältää tekstiä, kun taas bytes ja bytearray sisältävät raakoja tavuarvoja.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Koodaus ja dekoodaus
Koodaus muuntaa tekstin tavuiksi, jotta se voidaan tallentaa tai siirtää luotettavasti, kun taas dekoodaus palauttaa nämä tavut takaisin luettavaan tekstiin. Määritellyn koodauksen, kuten UTF-8, käyttäminen varmistaa merkkien oikean säilymisen.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Tekstin ja tavujen yhdistäminen
Tekstiä (str) ja tavuja (bytes) ei voi yhdistää suoraan, koska ne edustavat eri tietotyyppejä. Jotta voit yhdistää ne turvallisesti, teksti täytyy ensin muuntaa tavuiksi käyttämällä eksplisiittistä koodausta.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Pituuserot
Jotkin merkit vievät yhden tekstielementin, mutta useita tavuja, joten niiden pituus str- ja koodatussa muodossa voi poiketa toisistaan. Tämä johtuu siitä, että esimerkiksi UTF-8-koodaus voi käyttää useampaa tavua yhden merkin esittämiseen.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Tiedostot
Binaaritiedostot tulee avata tilassa "rb", jotta niiden raakatavua luetaan täsmälleen sellaisena kuin se on tallennettu. Tämä estää Pythonia yrittämästä tulkita tietoa tekstinä.
# with open("example.png", "rb") as f:
# blob = f.read()
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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?
Awesome!
Completion rate improved to 3.45
None- ja Binääritiedot
Pyyhkäise näyttääksesi valikon
Todelliset ohjelmat käsittelevät puuttuvia arvoja ja binääritietoa. Käytä None-arvoa merkitsemään "ei arvoa", ja bytes/bytearray raakadatan tallentamiseen. Tiedä, milloin kumpaakin käytetään ja miten muunnetaan turvallisesti tekstin ja tavujen välillä.
None "Ei arvoa" -tapauksissa
None on yksittäinen olio, joka tarkoittaa "ei mitään tässä".
1234567result = None email = None print(result is None) # True print(email is None) # True if result is None: print("No result yet")
Käytä is None totuusarvotarkistusten sijaan, koska myös 0 ja "" ovat epätosia.
123value = 0 print(not value) # True print(value is None) # False
Oletusarvot ja vararatkaisut
None toimii selkeänä merkkinä siitä, että arvo puuttuu tarkoituksella. Sen avulla voidaan erottaa tilanteet, joissa arvoa ei ole annettu, ja tapaukset, joissa arvo on esimerkiksi 0 tai "". Tämä tekee oletusarvoista ja vararatkaisuista turvallisempia ja ennustettavampia.
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
Funktiot ja parametrit
Tämä esimerkki havainnollistaa, kuinka funktio käyttää parametria, jonka arvoksi on asetettu None, merkkinä siitä, ettei tunnistetta ole annettu. Tämä mahdollistaa turvallisen oletusarvon asettamisen, mutta antaa kutsujalle mahdollisuuden ohittaa oletus tarvittaessa.
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 ja bytearray binääridatalle
str sisältää tekstiä, kun taas bytes ja bytearray sisältävät raakoja tavuarvoja.
1234b1 = b"hello" b2 = bytes([72, 105]) buf = bytearray(b"abc") buf[0] = 65
Koodaus ja dekoodaus
Koodaus muuntaa tekstin tavuiksi, jotta se voidaan tallentaa tai siirtää luotettavasti, kun taas dekoodaus palauttaa nämä tavut takaisin luettavaan tekstiin. Määritellyn koodauksen, kuten UTF-8, käyttäminen varmistaa merkkien oikean säilymisen.
123text = "café" data = text.encode("utf-8") back = data.decode("utf-8")
Tekstin ja tavujen yhdistäminen
Tekstiä (str) ja tavuja (bytes) ei voi yhdistää suoraan, koska ne edustavat eri tietotyyppejä. Jotta voit yhdistää ne turvallisesti, teksti täytyy ensin muuntaa tavuiksi käyttämällä eksplisiittistä koodausta.
123456try: b"ID:" + "123" except TypeError as e: print(e) ok = b"ID:" + "123".encode("utf-8")
Pituuserot
Jotkin merkit vievät yhden tekstielementin, mutta useita tavuja, joten niiden pituus str- ja koodatussa muodossa voi poiketa toisistaan. Tämä johtuu siitä, että esimerkiksi UTF-8-koodaus voi käyttää useampaa tavua yhden merkin esittämiseen.
123ch = "é" len(ch) # 1 len(ch.encode()) # 2
Tiedostot
Binaaritiedostot tulee avata tilassa "rb", jotta niiden raakatavua luetaan täsmälleen sellaisena kuin se on tallennettu. Tämä estää Pythonia yrittämästä tulkita tietoa tekstinä.
# with open("example.png", "rb") as f:
# blob = f.read()
Kiitos palautteestasi!