Python Academy · Oppitunti

NamedTuple-perusteet

Luo kevyitä muuttumattomia tietueita

Oppitunti 3/413 vaihetta

NamedTuple-perusteet on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mikä NamedTuple on

Nimetty monikko on monikko, jonka alkioilla on myös nimet. Saatte monikon keveyden ja muuttumattomuuden sekä luettavan attribuuttien käytön. Se sopii erinomaisesti pienille tietueille.

Tavallisten monikkojen ongelma

Tavalliset monikot perustuvat sijainteihin, joten jokaisen indeksin merkitys on muistettava. Koodi kuten p[0] ja p[1] on helppo kirjoittaa väärin.

point = (1, 2)
print(point[0])  # x?
print(point[1])  # y?

Luominen namedtuple-funktiolla

Tehdasfunktio collections.namedtuple luo uuden monikkoaliluokan. Antakaa sille tyypin nimi ja kenttien nimet.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)

Käyttö nimen perusteella

Nyt voitte lukea kentät nimen ettekä indeksin perusteella, mikä tekee koodista itsestään selvää.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x)
print(p.y)

Edelleen monikko

Nimetty monikko on edelleen oikea monikko, joten indeksointi, purkaminen ja läpikäynti toimivat tavalliseen tapaan.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p[0])
x, y = p
print(x, y)

Muuttumattomuus

Kuten kaikki monikot, nimetyt monikot ovat muuttumattomia. Kentän arvon määrittäminen nostaa poikkeuksen AttributeError.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
try:
    p.x = 99
except AttributeError as e:
    print('Cannot modify:', e)

Muokatun kopion tekeminen

Koska monikkoa ei voi muuttaa, käyttäkää metodia _replace() uuden instanssin luomiseen niin, että jotkin kentät on muutettu.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
q = p._replace(y=99)
print(p)
print(q)

Muuntaminen sanakirjaksi

Metodi _asdict() palauttaa kentät sanakirjana, mikä on hyödyllistä serialisoinnissa tai lokituksessa.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p._asdict())

Kenttien tarkasteleminen

Attribuutti _fields luettelee kenttien nimet. Se on kätevä yleiskäyttöisessä koodissa, joka käy tietueen kentät läpi.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
print(Point._fields)

Oletusarvot

Antakaa oletusarvot argumentilla defaults. Oletusarvot koskevat oikeanpuoleisia kenttiä aivan kuten funktion parametrien oletusarvot.

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y', 'z'], defaults=[0])
print(Point(1, 2))
print(Point(1, 2, 9))

Useiden arvojen palauttaminen

Nimetyt monikot ovat parhaimmillaan funktion palautusarvoina. Sen sijaan että palauttaisitte nimeämättömän monikon, palauttakaa nimetty monikko, jotta kutsuja voi lukea kentät nimen perusteella.

from collections import namedtuple

Stats = namedtuple('Stats', ['minimum', 'maximum'])

def analyze(nums):
    return Stats(min(nums), max(nums))

r = analyze([3, 1, 9, 4])
print(r.minimum, r.maximum)

Pikatarkistus

Miten luotte nimetyn monikko-instanssin muokatun kopion?

Kertaus

Opitte luomaan kevyitä ja muuttumattomia tietueita.

  • namedtuple lisää monikkoihin kenttien nimet.
  • Kenttiä voi käyttää nimen tai indeksin perusteella, ja purkaminen toimii edelleen.
  • Käyttäkää _replace()-metodia muokattuihin kopioihin ja _asdict()-metodia muuntamiseen.
  • _fields luettelee nimet ja defaults määrittää oletusarvot.
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”NamedTuple-perusteet” ilmainen?

Kyllä – oppitunnin ”NamedTuple-perusteet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”NamedTuple-perusteet”?

Luo kevyitä muuttumattomia tietueita Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”NamedTuple-perusteet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Enum-luokka
  2. IntEnum ja Flag
  3. NamedTuple-perusteet
  4. typing.NamedTuple
← Takaisin: Python Academy