Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele None- ja Binääritiedot | Ristikkäistyyppiset Vuorovaikutukset
Tietotyypit Pythonissa

bookNone- ja Binääritiedot

Todelliset ohjelmat käsittelevät puuttuvia arvoja ja binääridataa. Käytä None-arvoa merkitsemään "ei arvoa", ja bytes/bytearray raakadatan tallentamiseen. Tunnista, 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ä".

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

Käytä is None totuusarvotarkistusten sijaan, koska myös 0 ja "" ovat epätosia.

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

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 oletusarvojen ja vararatkaisujen käytöstä turvallisempaa ja ennustettavampaa.

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

Funktiot ja parametrit

Tämä esimerkki havainnollistaa, kuinka funktio käyttää parametria, jonka arvoksi on asetettu None, merkkinä siitä, ettei tunnistetta ole annettu. Näin funktio voi määrittää turvallisen oletusarvon, mutta antaa kutsujan tarvittaessa ohittaa sen.

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

Binääritieto

str sisältää tekstiä, bytes ja bytearray sisältävät raakoja tavuarvoja.

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

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.

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

Tekstin ja tavujen yhdistäminen

Tekstiä (str) ja tavuja (bytes) ei voi yhdistää suoraan, koska ne edustavat eri tietotyyppejä. Jotta voit yhdistää ne turvallisesti, sinun täytyy ensin muuntaa teksti tavuiksi käyttämällä eksplisiittistä koodausta.

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

Pituuserot

Jotkin merkit vievät yhden tekstielementin, mutta useita tavuja, joten niiden pituus str-muodossa ja koodatussa muodossa voi poiketa toisistaan. Tämä johtuu siitä, että esimerkiksi UTF-8-koodaus voi käyttää useampaa tavua yhden merkin esittämiseen.

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

Tiedostot

Binaaritiedostot täytyy 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()
question mark

Mikä tarkistus tunnistaa puuttuvan arvon oikein?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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?

bookNone- ja Binääritiedot

Pyyhkäise näyttääksesi valikon

Todelliset ohjelmat käsittelevät puuttuvia arvoja ja binääridataa. Käytä None-arvoa merkitsemään "ei arvoa", ja bytes/bytearray raakadatan tallentamiseen. Tunnista, 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ä".

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

Käytä is None totuusarvotarkistusten sijaan, koska myös 0 ja "" ovat epätosia.

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

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 oletusarvojen ja vararatkaisujen käytöstä turvallisempaa ja ennustettavampaa.

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

Funktiot ja parametrit

Tämä esimerkki havainnollistaa, kuinka funktio käyttää parametria, jonka arvoksi on asetettu None, merkkinä siitä, ettei tunnistetta ole annettu. Näin funktio voi määrittää turvallisen oletusarvon, mutta antaa kutsujan tarvittaessa ohittaa sen.

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

Binääritieto

str sisältää tekstiä, bytes ja bytearray sisältävät raakoja tavuarvoja.

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

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.

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

Tekstin ja tavujen yhdistäminen

Tekstiä (str) ja tavuja (bytes) ei voi yhdistää suoraan, koska ne edustavat eri tietotyyppejä. Jotta voit yhdistää ne turvallisesti, sinun täytyy ensin muuntaa teksti tavuiksi käyttämällä eksplisiittistä koodausta.

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

Pituuserot

Jotkin merkit vievät yhden tekstielementin, mutta useita tavuja, joten niiden pituus str-muodossa ja koodatussa muodossa voi poiketa toisistaan. Tämä johtuu siitä, että esimerkiksi UTF-8-koodaus voi käyttää useampaa tavua yhden merkin esittämiseen.

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

Tiedostot

Binaaritiedostot täytyy 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()
question mark

Mikä tarkistus tunnistaa puuttuvan arvon oikein?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 3
some-alt