Popis
Jazyk Phyton získal popularitu díky dostupnosti knihoven a nedostatku potíží s přípravou pracovního prostředí a spuštěním programování. Navzdory mnoha výhodám má jazyk mnoho skrytých úskalí, které mohou být obtížné, pokud o nich uživatel neví.
Tato kniha vám pomůže vytěžit z Pythonu maximum. Prostřednictvím realistických příkladů autor představuje složitosti a málo známé idiomy, které ovlivňují chování a výkon kódu. Čtenář se dozví o nejdůležitějších otázkách jazyka Python, jako jsou: funkce, třídy, dědičnost, metaclass nebo atributy. Kromě toho se naučí, jak zvolit nejúčinnější způsob, jak dosáhnout zamýšlených výsledků. Naučí se také psát kód, který je snadno srozumitelný, udržovatelný a vylepšitelný.
Každá kapitola obsahuje podrobný popis příkladů jasným a snadno srozumitelným způsobem.
Kniha pojednává o následujících číslech:
- Rady ke všem nejdůležitějším oblastem programování v Pythonu 3.xa 2.x s podrobným vysvětlením a příklady.
- Osvědčené postupy pro vytváření funkcí, které jasně vyjadřují váš záměr, podporují opětovné použití stejného kódu a pomáhají předcházet chybám.
- Diskuse na téma správného vyjádření chování programu pomocí tříd a objektů.
- Rady, jak se vyhnout nástrahám při používání metaclass a dynamických atributů.
- Prezentace mnohem efektivnějšího přístupu k souběžnosti a paralelismu.
- Prezentace lepších technik a způsobů použití vestavěných modulů Pythonu.
- Prezentace nástrojů a osvědčených postupů používaných při společné práci na projektech.
- Řešení pro ladění, testování a optimalizaci, vedoucí ke zlepšení kvality a výkonu kódu.
Obsah Úvod (11) Poděkování (15) O autorovi (17) Kapitola 1. Programovací recept vyhovující Pythonu - Metoda 1. Zjistěte, kterou verzi Pythonu používáte (19)
- Metoda 2. Použijte PEP Style 8 (21)
- Metoda 3. Rozdíly mezi typy bajtů, str a unicode (23)
- Metoda 4. Zvolte pomocné funkce místo složitých výrazů (26)
- Metoda 5: Dovedně rozdělte sekvence (29)
- Metoda 6. Nepoužívejte počáteční, koncové a krokové hodnoty indexů v jedné operaci rozdělení (31)
- Metoda 7. Použít seznamy kompilace namísto funkcí map () a filter () (33)
- Metoda 8. Vyhněte se více než dvěma výrazům ve složeném seznamu (35)
- Metoda 9. Zvažte použití generátoru výrazů pro velké seznamy skládání (36)
- Metoda 10. Preferovat výčet () před rozsahem () (38)
- Metoda 11. Použití funkce zip () k současnému zpracování iterátorů (39)
- Manévr 12. Vyhýbejte se dalším blokům po smyčkách for a while (41)
- Metoda 13. Využití výhod všech bloků v konstrukci Try-Except-Else-konečne
Kapitola 2. Funkce (47) - Metoda 14. Upřednostňovat výjimky před vrácením Žádné (47)
- Metoda 15. Podívejte se, jak uzávěry interagují s rozsahem proměnné (49)
- Metoda 16. Zvažte použití generátorů místo vracení seznamů (54)
- Metoda 17. Udržujte obranu při iteraci pomocí argumentů (56)
- Manévr 18 Snižte vizuální zmatek s variabilním počtem polohových argumentů 61
- Metoda 19. Definujte volitelné chování pomocí argumentů klíčových slov 63
- Metoda 20. Použití None a docstring k dynamickému určení výchozích argumentů 66
- Metoda 21. Vynutit čitelnost kódu pomocí pouze argumentů klíčových slov (69)
Kapitola 3. Třídy a dědičnost 73 - Metoda 22: Upřednostňovat pomocné třídy před slovníky a n-ticemi (73)
- Metoda 23. U jednoduchých rozhraní přijímejte funkce místo tříd (78)
- Metoda 24: Použití polymorfismu @classmethod pro generické vytváření objektů
- Metoda 25: Inicializace hlavní třídy pomocí Super ()
- Metoda 26. Použít více dědičností pouze ve třídách nástrojů (91)
- Metoda 27. Upřednostňovat veřejné atributy před soukromými 95
- Metoda 28. Dědičnost z kolekce.abc v kontejnerech vlastních typů 99
Kapitola 4. Metaclasses a atributy 105 - Metoda 29: Místo metod Getter a Setter použijte normální atributy (105)
- Metoda 30. Zvažte použití @ vlastnosti namísto refaktorování atributů (109)
- Metoda 31. Použijte deskriptory k opětovnému použití metod zdobených @property (113)
- Metoda 32. Použijte __getattr __ (), __getattribute __ () a __setattr __ () pro zpožděné atributy (117)
- Způsob 33: Zkontrolujte podtřídy pomocí Metaclasses 122
- Manévr 34. Zaregistrujte stávající třídy pomocí metaclassů 124
- Metoda 35. Přidání anotací atributů třídy pomocí metaclass (128)
Kapitola 5. Souběžnost a paralelismus (131) - Způsob 36. Použijte modul podprocesu ke správě podřízených procesů (132)
- Manévr 37. Používejte vlákna pro operace blokování I / O, vyhněte se receptu paralelismu
- Metoda 38. Použijte třídu Lock, abyste se vyhnuli stavu závodu v podprocesech (140)
- Metoda 39: Použití fronty ke koordinaci práce mezi vlákny 143
- Manévr 40. Zvažte použití corutinů k provádění více funkcí současně 150
- Způsob 41. Zvažte použití concurrent.futures () k získání skutečné paralelní (158)
Kapitola 6. Vestavěné moduly (163) - Způsob 42. Definujte dekoratéry funkcí pomocí functools.wraps (163)
- Metoda 43: Zvažte použití contextlib and with pro opětovné použití konstrukce try-nakonec 166
- Metoda 44: Spolehlivé použití nálevu s Copyreg 169
- Metoda 45. Při zpracování místního času použijte místo času modul datetime (174)
- Manévr 46. Používejte vložené algoritmy a datové struktury 178
- Metoda 47. Když je důležitá přesnost, použijte desítkový modul (183)
- Způsob 48. Kdy hledat moduly vyvinuté komunitou? (185)
Kapitola 7. Spolupráce (187) - Metoda 49. Pro každou funkci, třídu a modul vytvořte dokumentový řetězec (187)
- Recept 50. Používejte balíčky k organizaci modulů a poskytování stabilních API
- Metoda 51. Definujte kořenovou výjimku pro izolaci volající komponenty z API 196
- Manévr 52. Podívejte se, jak prolomit kruh závislostí 199
- Manévr 53. Používejte virtuální prostředí pro izolované a opakující se závislosti 204
Kapitola 8. Produkce (211) - Manévr 54. Zvažte použití kódu s rozsahem modulu ke konfiguraci prostředí nasazení 211
- Způsob 55. K ladění výstupu 214 použijte textové řetězce repr
- Způsob 56. Otestujte vše pomocí unittestu (217)
- Metoda 57. Zvažte interaktivní ladění s pdb
- Manévr 58. Před optimalizací receptu proveďte profilování 222
- Metoda 59. Použijte modul tracemalloc, porozumět využití paměti a detekovat úniky paměti (226)
Rejstřík (229) |