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
Quizzes & Challenges
Quizzes
Challenges
/
Tietotyypit Pythonissa

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

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 oletusarvoista ja vararatkaisuista turvallisempia ja ennustettavampia.

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

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.

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 ja bytearray binääridatalle

str sisältää tekstiä, kun taas 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, teksti täytyy ensin muuntaa 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- 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 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()
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 and missing values?

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

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 oletusarvoista ja vararatkaisuista turvallisempia ja ennustettavampia.

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

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.

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 ja bytearray binääridatalle

str sisältää tekstiä, kun taas 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, teksti täytyy ensin muuntaa 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- 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 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()
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