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

None- 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-tyyppejä raakadatan tallentamiseen. Tiedä, milloin mikäkin on sopiva ja miten muuntaa turvallisesti tekstin ja tavujen välillä.

None "ei arvoa" -tilanteisiin

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")

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

123
value = 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 tilanne, jossa arvoa ei ole annettu, kelvollisista arvoista kuten 0 tai "", mikä 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' print("unknown" if x is None else x) # 0

Funktiot ja parametrit

Tässä esimerkissä funktio käyttää parametria, jonka arvoksi on asetettu None, merkkinä siitä, että tunnistetta ei ole annettu. Tämä mahdollistaa turvallisen oletusarvon asettamisen, mutta antaa kutsujan silti ohittaa sen 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

Binaaridata

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

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:n, käyttäminen varmistaa merkkien oikean säilymisen.

123
text = "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ä merkistökoodausta.

123456
try: 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-muodossa ja koodatussa muodossa voi erota. 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

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 dataa tekstinä.

# with open("example.png", "rb") as f:
#     blob = f.read()
question mark

Mikä tarkistus tunnistaa puuttuvan arvon oikein?

Valitse oikea vastaus

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

Osio 4. Luku 3
some-alt