Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Podsumowanierozdziału
Biegłaznajomośćtypówsekwencyjnychzbibliotekistandardowejjestniezbędnadopi-
saniazwięzłego,wydajnegoiidiomatycznegokoduPythona.
SekwencjePythonaczęstodzielonenazmienneiniezmienne,aleprzydatnymjest
równieżrozważenieinnegopodziału:nasekwencjepłaskieikontenery.Pierwszebar-
dziejzwarte,szybszeiłatwiejszewużyciu,aleograniczonedoprzechowywaniadanych
atomowych,takichjakliczby,znakiibajty.Sekwencjekontenerowebardziejelastyczne,
alemogąsprawiaćniespodzianki,gdyprzechowujązmienneobiekty,więcmusimyuwa-
żać,abyużywaćichpoprawniezzagnieżdżonymistrukturamidanych.
NiestetyPythonniezawieranodpornegonagłupotę”
,niezmiennegotypusekwencji
kontenerowej:nawetwnniezmiennych”krotkachwartościmogąsięzmieniać,gdyza-
wierająonezmienneelementy,takiejaklistylubobiektydefiniowaneprzezużytkownika.
Wyrażenialistoweiwyrażeniageneratorapotężnyminotacjamisłużącymidobudo-
waniaiinicjowaniasekwencji.Jeślinieposługujeszsięnimijeszczeswobodnie,poświęć
czas,abyopanowaćjewpodstawowymzakresie.Niejesttotrudneiszybkojezałapiesz.
KrotkiwPythonieodgrywajądwierole:rekordówznienazwanymipolamioraznie-
zmiennychlist.Gdyużywamykrotkijakoniezmiennejlisty,trzebapamiętać,żewartość
krotkijestustalonatylkopodwarunkiem,żewszystkiezawartewniejelementyrów-
nieżniezmienne.Wywołaniefunkcji
hash(t)
względemkrotkijestszybkimsposobem
upewnieniasię,czyjejwartośćjestustalona.Jeśli
t
zawierazmienneelementy,zostanie
zgłoszonywyjątek
TypeError
.
Kiedyużywamykrotkijakorekordu,rozpakowywaniekrotekjestnajszybszym,naj-
bardziejczytelnymsposobemdostępudopól.Pozakrotkami,gwiazdka(
*
)wwielukon-
tekstachdziałarównieżzlistamiiinnymitypamiiterowalnymi.Niektórezprzypadków
użyciapojawiłysięwPythonie3.5wrazzdokumentemnPEP448-AdditionalUnpacking
Generalizations”(https://fpy.li/pep448).Python3.10wprowadziłdopasowywaniewzo
-
rócówwykorzystujące
match/case
,któreobsługujebardziejskutecznerozpakowywanie,
znanejakodestrukturyzacja.
WycinaniesekwencjijestulubionąfunkcjonalnościąskładniPythona,ajejsiłajest
większaniżsięuważa.Wielowymiarowewycinanieiwielokropki(
...
),takiejakużywane
wNumPy,mogąbyćobsługiwanerównieżprzezsekwencjedefiniowaneprzezużytkow-
nika.Przypisywaniedowycinkówjestbardzowyrazistymsposobemedycjizmiennych
sekwencji.
Wielokrotnakonkatenacja,jakw
seq*n
,jestwygodna,astosowanazostrożnością
możesłużyćdoinicjowanialistskładającychsięzlistzawierającychniezmienneelementy.
Złożoneprzypisaniezapomocąoperatorów
+:
i
*:
zachowujesięróżniedlasekwencji
zmiennychiniezmiennych.Wostatnimprzypadkuoperatorymusząbudowaćnowesek-
wencje.Jeślinatomiastsekwencjadocelowajestzmienna,zwyklejestzmienianawmiej-
scu-aleniezawsze,wzależnościodimplementacjisekwencji.
Metoda
sort
iwbudowanafunkcja
sorted
łatwewużyciuielastycznedziękiop-
cjonalnemuargumentowi
key
,któryprzyjmująwrazzfunkcjądoobliczaniakryterium
Podsumowanierozdziału
|
73