Kachna Psaní v Pythonu – 3 Praktické Příklady

Praktické Příklady

V Pythonu, iterace nám umožňuje jít nad seznamem položek k provedení určité operace. Jedním z běžných způsobů, jak vytvořit iteraci, je použití smyček for, které mají následující obecný formát.

for i in iterable:
expression

jak je popsáno v mém předchozím článku, můžeme vytvořit naše vlastní iterátory, které lze použít jako iterables v smyčkách for. Pro splnění „kachního testování“ pro iterátory musí vlastní třída implementovat metody __iter__() a __next__(). Konkrétní příklad je uveden níže.

Duck Typing v Iterátory

Ve výše uvedeném kódu, zavedli jsme oba __iter__() a __next__() metody, které instance vlastní třídy Cubes iterátory, jako to například bylo možné použít v for smyčka.

Callables

kromě vestavěného datového typu dict je dalším důležitým typem slovníku defaultdict, který je k dispozici v modulu collections. Tento datový typ podobný slovníku má následující Konstruktor: defaultdict(]). Konkrétně argument default_factory je typ volatelného,například funkce nebo funkce lambda.

v mém předchozím článku jsem ukázal, že bychom mohli využít defaultdict předáním funkce lambda. Zde je příklad jeho použití.

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

zejména můžeme mít lepší flexibilitu při použití datového typu defaultdict, pokud vytvoříme vlastní výchozí továrnu. S filozofií „duck typing“ musí vlastní třída implementovat metodu __call__(), což je něco, co lze volat. Uvidíme, jak to bude fungovat.

Duck Typing v Callables

, Jak je znázorněno ve výše uvedeném kódu, jsme se vytvořit DucklingFactory třída, jejíž __call__() funkce vrátí seznam Duckling instance. Pomocí této tovární funkce budeme moci vytvořit požadovaný počet kachňat vynásobením výchozího seznamu káčátek.

třídění pomocí Len ()

dalším možným použitím duck typing je implementace vlastní funkce len(), kterou lze použít při třídění seznamu pomocí funkce sort(). Jako vedlejší poznámku někteří lidé označují funkci len() jako magickou funkci, protože je implementována voláním funkce __len__() za scénou (funkce s dvojitým podtržítkem jako předpona a přípona se nazývají magické funkce).

Předpokládejme, že chceme třídit seznam kachen na základě délky názvu každé kachny. Zde je návod, jak můžeme v tomto případě použít kachní psaní.

Duck Typing v Třídění

Ve výše uvedeném kódu, vlastní NamedDuck třída implementuje __str__() a __len__() funkce, které nám umožňuje použít str() a len() funkce na jeho případy v Řádcích 10 a 12, resp. Důležité je, jak vidíte, i když je seznam smíchán s pojmenovanými kachnami a řetězci, všechny prvky mohou volat funkce str() a len(), takže seznam lze třídit pomocí len() jako klíč a použít v seznamu porozumění, když chceme vytisknout tříděný výsledek.

to Znamená, že širší důsledky tohoto použití je, že když máme smíšené seznam prvků různých datových typů, tak dlouho, jak každý datový typ implementuje stejné funkce, prvky přejde kachna testování a být použity s správné operace. Zde je příklad obecného použití Pomocí funkce len() na smíšeném seznamu datových typů str, tuple a list.

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

You might also like

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.