kacsa gépelés Pythonban – 3 gyakorlati példa

gyakorlati példák

Pythonban az iteráció lehetővé teszi számunkra, hogy áttekintsük az elemek listáját bizonyos műveletek végrehajtásához. Az iteráció létrehozásának egyik általános módja a for hurkok használata, amelyek a következő általános formátumúak.

for i in iterable:
expression

amint azt az előző cikkemben tárgyaltuk, létrehozhatunk egyéni iterátorokat, amelyek iterablesként használhatók a for hurkokban. Az iterátorok “kacsa tesztelésének” kielégítéséhez az egyéni osztálynak végre kell hajtania a __iter__() és __next__() módszereket. Az alábbiakban egy konkrét példa található.

kacsa gépelés az Iterátorokban

a fenti kódrészletben mind a __iter__(), mind a __next__() módszereket implementáltuk, amelyek az egyéni osztály példányait Cubes iterátorokká teszik, így a példány for ciklusban használható.

Callables

a beépített dict adattípus mellett egy másik fontos szótártípus a defaultdict, amely a collections modulban érhető el. Ez a szótárszerű adattípus a következő konstruktorral rendelkezik: defaultdict(]). Pontosabban, a default_factory argumentum egyfajta hívható, például függvény vagy lambda függvény.

előző cikkemben megmutattam, hogy a defaultdict – ot egy lambda függvény átadásával tudjuk használni. Íme egy példa a használatára.

>>> from collections import defaultdict
>>> letter_counts = defaultdict(lambda: 0)
>>> for i in 'abcddddeeeee':
... letter_counts += 1
...
>>> letter_counts.items()
dict_items()

nevezetesen, nagyobb rugalmasságot tudunk biztosítani a defaultdict adattípus használatához, ha saját alapértelmezett gyárat hozunk létre. A “kacsa gépelés” filozófiájával az egyéni osztálynak végre kell hajtania a __call__() módszert, ami valami hívhatóvá tétele. Lássuk, hogyan működik.

kacsa gépelés Callables

amint azt a fenti kódot, hozzuk létre a DucklingFactory osztály, amelynek __call__() függvény egy listát egy Duckling példány. Ennek a gyári funkciónak a használatával Az alapértelmezett kiskacsák listájának szorzásával elkészíthetjük a kívánt kiskacsák számát.

válogatás a Len()

a kacsa gépelés Másik lehetséges használata az egyedi len() funkció megvalósítása, amely felhasználható a lista rendezéséhez a sort() funkcióval. Mellékesen megjegyezném, hogy egyesek a len() függvényt mágikus függvénynek nevezik, mert a __len__() függvénynek a színfalak mögött történő meghívásával valósítják meg (azokat a függvényeket, amelyek kettős aláhúzással rendelkeznek előtagként és utótagként, mágikus függvényeknek nevezzük).

tegyük fel, hogy a kacsák listáját az egyes kacsák nevének hossza alapján szeretnénk rendezni. Itt van, hogyan tudjuk alkalmazni a kacsa gépelés ebben az esetben.

kacsa gépelés A

válogatásban a fenti kódrészletben az egyéni NamedDuck osztály a __str__() és __len__() funkciókat valósítja meg, amelyek lehetővé teszik számunkra, hogy a str() és len() funkciókat használjuk példányain a 10.és a 12. sorban. Fontos, hogy mint látható, bár a lista keveredik a megnevezett kacsákkal és karakterláncokkal, minden elem meghívhatja a str() és len() függvényeket, így a lista rendezhető a len() kulcs segítségével, és használható a lista megértésében, amikor ki akarjuk nyomtatni a rendezett eredményt.

ennek a használatnak a tágabb következménye tehát az, hogy ha különböző adattípusok elemeinek vegyes listája van, mindaddig, amíg az egyes adattípusok ugyanazokat a funkciókat valósítják meg, az elemek átmennek a kacsa tesztelésen, és a megfelelő műveletekkel alkalmazhatók. Íme egy általános használati példa a len () függvény használatával a str, tuple és listadattípusok vegyes listáján.

>>> mixed_list = ]
>>> mixed_list.sort(key=len)
>>> mixed_list
, (1, 2), 'Amazing']

You might also like

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.