• EOL

Krajta. Recepty. 3. vydání - David Beazley, Brian K. Jones

Index: KSZ-02306

Překlad: Tomasz Walczak . Vydavatel: Helion. Kniha popisuje osvědčené způsoby řešení nejběžnějších problémů, které vznikají při programování v Phytonu .

Krajta. Recepty. 3. vydání - David Beazley, Brian K. Jones
517,19 Kč
492,56 Kč bez DPH.
Nepřístupný
Produkt s ukončenou výrobou
30 dní na vrácení zboží
Výrobce: Helion

Pozornost!

Prodej produktu byl dokončen. Podívejte se na další zařízení v této kategorii .

Popis

Kniha je třetím vydáním populární série „Recepty“, ve které najdete osvědčené způsoby řešení nejběžnějších problémů, které vznikají při programování v Phytonu.

Z čtení se naučíte, jak aktualizovat programy napsané ve starší verzi jazyka Phyton 2 na novější - Phyton 3. Kromě toho se naučíte, jak efektivně pracovat na celých číslech, datových strukturách a řetězcích. V této položce najdete také informace o tom, jak vytvářet vlastní funkce a jak přistupovat k souborům a sítím. Dozvíte se také, jak používat iterátory a generátory. Každý „recept“ obsahuje příklad kódu, který můžete použít ve svých vlastních projektech, spolu s komentářem a vysvětlením, jak kód funguje.

Ukázkové projekty použité v knize jsou k dispozici ke stažení . Výňatek z knihy ke čtení online .

Obsah

Předmluva (11)

1. Algoritmy a datové struktury (15)

  • 1.1. Extrakce sekvencí do samostatných proměnných
  • 1.2. Extrahování prvků z iterovatelných objektů jakékoli délky (16)
  • 1.3. Uložení posledních N položek (19)
  • 1.4. Vyhledejte N největší nebo nejmenší prvek (20)
  • 1.5. Vytvoření prioritní fronty 22
  • 1.6. Mapování kláves na různé hodnoty slovníku
  • 1.7. Určení pořadí ve slovnících (25)
  • 1.8. Výpočty dat ze slovníků (26)
  • 1.9. Hledání stejných dat ve dvou slovnících (28)
  • 1.10. Odstranění opakování ze sekvencí při zachování pořadí prvků (29)
  • 1.11. Pojmenovací klipy (30)
  • 1.12. Identifikace nejběžnějších prvků v sekvenci (31)
  • 1.13. Řazení seznamů slovníků podle běžných kláves (33)
  • 1.14. Třídění objektů bez integrované podpory srovnání
  • 1.15. Seskupování záznamů na základě hodnoty pole 35
  • 1.16. Filtrování prvků sekvence
  • 1.17. Načítání podmnožiny slovníku
  • 1.18. Mapování jmen na prvky sekvence 40
  • 1.19. Simultánní transformace a redukce dat 42
  • 1.20. Kombinace více mapování do jednoho

2. Řetězce a text (47)

  • 2.1. Rozdělení řetězců po zjištění kteréhokoli z různých oddělovačů (47)
  • 2.2. Přiřazení textu k počáteční nebo koncové části řetězce 48
  • 2.3. Přiřazení řetězců pomocí zástupných znaků Shell 50
  • 2.4. Shoda a vyhledávání textových vzorů 51
  • 2.5. Najít a nahradit text (54)
  • 2.6. Najít a nahradit text bez rozlišování malých a velkých písmen 55
  • 2.7. Vytváření regulárních výrazů pro nejkratší shodu 56
  • 2.8. Vytvářejte regulární výrazy, které odpovídají víceřádkovým vzorům 57
  • 2.9. Převod textu Unicode na standardní formulář 58
  • 2.10. Používání znaků Unicode v regulárních výrazech 60
  • 2.11. Odstranění nežádoucích znaků z řetězců 61
  • 2.12. Zajištění správnosti a organizovanosti textu (62)
  • 2.13. Zarovnání řetězců 64
  • 2.14. Kombinace strun 66
  • 2.15. Nahrazování hodnot proměnných v řetězcích 68
  • 2.16. Formátujte text a získejte stanovený počet sloupců 70
  • 2.17. Zpracování entit HTML a XML v textu 71
  • 2.18. Rozdělit text na tokeny (73)
  • 2.19. Vytvoření jednoduchého rekurzivního analyzátoru down-top
  • 2.20. Provádění textových operací na bajtových řetězcích

3. Čísla, data a čas (87)

  • 3.1. Zaokrouhlení čísel (87)
  • 3.2. Provádění přesných desetinných míst 88
  • 3.3. Formátování čísel pro zobrazení 90
  • 3.4. Použití binárních, osmičkových a hexadecimálních celých čísel 92
  • 3.5. Balení do bajtů a vybalení velkých celých čísel z bajtů 93
  • 3.6. Provádění výpočtů komplexních čísel 95
  • 3.7. Hodnoty nekonečna a NaN (96)
  • 3.8. Výpočet se zlomky 98
  • 3.9. Výpočet pomocí polí s velkým počtem 99
  • 3.10. Provádění operací matice a rozsahu 102
  • 3.11. Náhodné stahování položek (103)
  • 3.12. Převod dní na sekundy a další základní časové převody 105
  • 3.13. Zadání data z minulého pátku 107
  • 3.14. Zadání časového období odpovídajícího aktuálnímu měsíci 108
  • 3.15. Převod řetězců na objekty datetime 110
  • 3.16. Manipulace s daty s ohledem na časová pásma (111)

4. Iterátory a generátory (113)

  • 4.1. Ruční použití iterátoru
  • 4.2. Delegování iteračního procesu 114
  • 4.3. Vytváření nových iteračních vzorů pomocí generátorů 115
  • 4.4. Implementace protokolu Iterator 117
  • 4.5. Iterace v opačném směru 119
  • 4.6. Definování dalších funkcí generátoru stavu 120
  • 4.7. Načítání řezů dat vrácených Iterátorem
  • 4.8. Přeskočení první části iterovatelného objektu 122
  • 4.9. Iterace ve všech možných kombinacích nebo permutacích 124
  • 4.10. Rejstřík - Párování sekvenční hodnoty 125
  • 4.11. Krokování více sekvencí současně 127
  • 4.12. Procházení položkami ze samostatných kontejnerů 129
  • 4.13. Budování potrubí zpracování dat 130
  • 4.14. Převod vnořených sekvencí do jedné dimenze 133
  • 4.15. Procházení sloučených seřazených objektů podle pořadí řazení 134
  • 4.16. Výměna nekonečných while smyček s iterátorem 135

5. Soubory a I / O

  • 5.1. Čtení a zápis textových dat (137)
  • 5.2. Ukládání dat z tisku () do souboru 139
  • 5.3. Použití vlastních oddělovačů nebo konce řádku ve funkci tisku () 140
  • 5.4. Čtení a zápis binárních dat (141)
  • 5.5. Zápis dat do souboru, který neexistuje 142
  • 5.6. Provádění I / O na řetězcích 143
  • 5.7. Čtení a zápis komprimovaných datových souborů 144
  • 5.8. Procházení záznamů pevné velikosti 145
  • 5.9. Čtení binárních dat do proměnné vyrovnávací paměti 146
  • 5.10. Mapování binárních souborů do paměti 148
  • 5.11. Manipulace s cestami 150
  • 5.12. Kontrola existence souboru 151
  • 5.13. Načítání seznamu adresářů
  • 5.14. Bez ohledu na kódování názvu souboru 153
  • 5.15. Zobrazení neplatných názvů souborů
  • 5.16. Přidání nebo změna kódování otevřeného souboru
  • 5.17. Zápis bajtů do textového souboru 158
  • 5.18. Umístění existujícího deskriptoru souboru do objektu souboru
  • 5.19. Vytváření dočasných souborů a adresářů
  • 5.20. Komunikace se sériovými porty
  • 5.21. Serializace objektů Pythonu 163

6. Kódování a zpracování dat (167)

  • 6.1. Načítání a zápis dat CSV 167
  • 6.2. Čtení a zápis dat ve formátu JSON 170
  • 6.3. Analýza jednoduchých dat XML 174
  • 6.4. Postupná analýza velmi velkých souborů XML
  • 6.5. Převod slovníků na XML 179
  • 6.6. Analýza, Úpravy a přepisování dokumentů XML 181
  • 6.7. Analýza dokumentů XML s obory jmen 183
  • 6.8. Komunikace s relačními databázemi 185
  • 6.9. Hex dekódování a kódování (187)
  • 6.10. Dekódujte a zakódujte hodnoty Base64 188
  • 6.11. Čtení a zápis binárních polí obsahujících struktury 188
  • 6.12. Načítání vnořených binárních struktur s proměnnou délkou 192
  • 6.13. Shrnutí dat a výpočet statistik

7. Funkce (203)

  • 7.1. Funkce psaní, které vyžadují libovolný počet argumentů 203
  • 7.2. Vytváření funkcí, které přijímají argumenty pouze s klíčovými slovy 204
  • 7.3. Připojení metadat s informacemi k argumentům funkcí 205
  • 7.4. Vrácení více hodnot podle funkcí
  • 7.5. Definování funkce s výchozími argumenty 207
  • 7.6. Definování anonymních (vložených) funkcí 210
  • 7.7. Načítání proměnných hodnot v anonymních funkcích
  • 7.8. Spuštění volajícího n-argumentu s menším počtem argumentů
  • 7.9. Nahrazování tříd jednou metodou funkcemi 215
  • 7.10. Další stav ve funkcích zpětného volání 216
  • 7.11. Přímé psaní funkcí zpětného volání 219
  • 7.12. Přístup k proměnným definovaným v závěru

8. Třídy a předměty 225

  • 8.1. Úpravy textové reprezentace objektů 225
  • 8.2. Úpravy formátování řetězců 226
  • 8.3. Přidání zpracování protokolu Context Management Protocol k objektům 228
  • 8.4. Snížení spotřeby paměti při vytváření velkého počtu objektů 230
  • 8.5. Zapouzdření jmen ve třídě
  • 8.6. Vytváření spravovaných atributů 232
  • 8.7. Volání metod základní třídy 236
  • 8.8. Rozšíření nemovitosti v odvozené třídě 240
  • 8.9. Vytvoření nového druhu atributů třídy nebo instance 243
  • 8.10. Použití Lazy vypočítaných vlastností 246
  • 8.11. Zjednodušení inicializace datových struktur 248
  • 8.12. Definování rozhraní nebo abstraktní základní třídy 251
  • 8.13. Vytvoření datového modelu nebo typového systému
  • 8.14. Vytvořte vlastní kontejnery 259
  • 8.15. Delegování přístupu k atributům
  • 8.16. Definování více než jednoho konstruktoru ve třídě
  • 8.17. Vytváření objektů bez volání __init __ () 267
  • 8.18. Rozšíření třídy o smíšené třídy 269
  • 8.19. Implementace stavových objektů nebo stavových strojů 273
  • 8.20. Volání metod na objektu na základě jména v řetězci 278
  • 8.21. Implementace vzoru návštěvníků
  • 8.22. Implementace vzoru návštěvníka bez rekurze
  • 8.23. Správa paměti v cyklických datových strukturách 288
  • 8.24. Vytváření tříd umožňujících srovnání 291
  • 8.25. Vytváření objektů v mezipaměti 293

9. Metaprogramování (297)

  • 9.1. Vytváření překrytí na funkcích 297
  • 9.2. Zachování metadat funkce při psaní dekoratérů
  • 9.3. Načítání primární funkce z překrytí
  • 9.4. Vytváření dekoratérů, které berou argumenty 302
  • 9.5. Definování dekoratéra s uživatelsky přizpůsobitelnými atributy 303
  • 9.6. Definování dekoratérů, kteří berou volitelný argument 306
  • 9.7. Kontrola typu síly u funkcí pomocí dekoratéru
  • 9.8. Definování dekoratérů jako prvků třídy
  • 9.9. Definování dekoratérů jako tříd 312
  • 9.10. Aplikování dekoratérů na třídní metody a statické metody
  • 9.11. Psaní dekoratérů, které přidávají argumenty k funkcím v překryvných vrstvách 316
  • 9.12. Použití dekoratérů k opravě definic tříd 319
  • 9.13. Používání metaklasy k řízení vytváření objektů
  • 9.14. Kontrola pořadí definování atributů třídy
  • 9.15. Definování metaclass, které vyžadují volitelné argumenty
  • 9.16. Kontrola podpisu s argumenty * args a ** kwargs
  • 9.17. Prosazování konvencí pro psaní kódu ve třídě
  • 9.18. Programové definování tříd
  • 9.19. Inicializace členů třídy v definici třídy
  • 9.20. Metody přetížení pomocí poznámek k funkcím
  • 9.21. Vyhýbání se metodám duplicitních vlastností 342
  • 9,22. Snadno definujte kontextové manažery
  • 9.23. Provádění kódu s lokálními vedlejšími účinky 346
  • 9,24. Analýza a analýza zdroje Pythonu
  • 9,25. Demontáž kódu Pythonu

10. Moduly a balíčky (355)

  • 10.1. Vytváření hierarchických balíčků s moduly
  • 10.2. Ovládání importu všech symbolů 356
  • 10.3. Import submodulů z balíčku pomocí relativních jmen
  • 10.4. Rozdělení modulu do více souborů 358
  • 10.5. Vytváření samostatných adresářů s importovaným kódem z jednoho oboru názvů
  • 10.6. Načítání modulů
  • 10.7. Povolení provádění kódu z adresáře nebo souboru ZIP jako hlavního skriptu
  • 10.8. Načítání datového souboru balíčku (365)
  • 10.9. Přidání adresářů do proměnné sys.path 366
  • 10.10. Import modulů podle názvu do řetězce 367
  • 10.11. Načítání modulů ze vzdáleného počítače pomocí háků v příkazu Import
  • 10.12. Úprava modulů během importu
  • 10.13. Instalace balíčků pouze pro osobní použití
  • 10.14. Vytvoření nového prostředí Pythonu
  • 10.15. Distribuce balíčků

11. Sítě a vývoj webových aplikací (389)

  • 11.1. Interakce se službami HTTP pomocí kódu klienta 389
  • 11.2. Vytváření serveru TCP
  • 11.3. Vytvoření serveru UDP
  • 11.4. Generování rozsahů IP adres z adresy CIDR
  • 11.5. Vytvoření jednoduchého rozhraní založeného na REST 399
  • 11.6. Zpracování jednoduchých vzdálených volání procedur pomocí XML-RPC
  • 11.7. Jednoduchá komunikace mezi tlumočníky 405
  • 11.8. Implementace vzdálených volání procedur
  • 11.9. Jednoduché ověření klienta 410
  • 11.10. Přidání podpory SSL do webových služeb
  • 11.11. Předávání deskriptoru Socket File mezi procesy
  • 11.12. Události řízené I / O operace
  • 11.13. Odesílání a přijímání velkých polí 427

12. Souběžnost 429

  • 12.1. Spouštění a zastavování vláken 429
  • 12.2. Určení, zda vlákno začalo 432
  • 12.3. Komunikace mezi vlákny 434
  • 12.4. Uzamčení kritické sekce 439
  • 12.5. Zamykání zabraňující zablokování
  • 12.6. Uložení stavu vlákna 445
  • 12.7. Vytvoření fondu vláken 446
  • 12.8. Jednoduché paralelní programování 449
  • 12.9. Jak se vypořádat (a přestat si dělat starosti s GIL) 453
  • 12.10. Definování úkolů, které fungují jako aktéři 456
  • 12.11. Zprávy publikování a odběru 459
  • 12.12. Použití generátorů místo vláken 462
  • 12.13. Dotazování více front vláken
  • 12.14. Spuštění procesu Daemon na Unixu 471

13. Utilitní skripty a správa systému (475)

  • 13.1. Přijímání vstupu skriptu pomocí přesměrování, kanálů nebo vstupních souborů
  • 13.2. Ukončení programu s chybovou zprávou (476)
  • 13.3. Možnosti analýzy z příkazového řádku
  • 13.4. Vyžádání hesla za běhu (479)
  • 13.5. Načítání velikostí terminálu
  • 13.6. Vyvolání externích příkazů a získání výstupu 481
  • 13.7. Kopírování nebo přesouvání souborů a adresářů 482
  • 13.8. Vytváření a extrahování archivů
  • 13.9. Hledání souborů podle jména (485)
  • 13.10. Načítání konfiguračních souborů 486
  • 13.11. Přidání mechanismu záznamu akce k jednoduchým skriptům 489
  • 13.12. Přidání podpory protokolování do knihoven
  • 13.13. Vytvoření stopek 493
  • 13.14. Omezení využití paměti a CPU 494
  • 13.15. Spuštění webového prohlížeče (495)

14. Testování, ladění a výjimky 497

  • 14.1. Testování výstupu do stdoutového proudu 497
  • 14.2. Nahrazování objektů v testech jednotek
  • 14.3. Kontrola výjimek v testech jednotek 501
  • 14.4. Uložení zkušebního výstupu do souboru 503
  • 14.5. Přeskočení testů nebo předvídání selhání testu 504
  • 14.6. Zpracování více výjimek
  • 14.7. Chytání všech výjimek 507
  • 14.8. Vytváření vlastních výjimek 508
  • 14.9. Vyvolání výjimky v reakci na jinou výjimku 510
  • 14.10. Načítání poslední výjimky 512
  • 14.11. Zobrazení varovných zpráv (513)
  • 14.12. Ladění jednoduchých selhání programu
  • 14.13. Doba běhu programu profilování a měření (516)
  • 14.14. Urychlení vašich programů 518

15. Rozšíření v C

  • 15.1. Přístup k C kódu pomocí modulu ctypes 526
  • 15.2. Psaní jednoduchých rozšiřujících modulů v jazyce C.
  • 15.3. Zápis rozšiřujících funkcí pro manipulaci s poli 535
  • 15.4. Správa neprůhledných ukazatelů v rozšiřujících modulech C.
  • 15.5. Definování a export C API v rozšiřujících modulech
  • 15.6. Vyvolání Pythonu z C kódu 544
  • 15.7. Uvolnění zámku GIL na rozšíření C.
  • 15.8. Současně Threading C a Python Code 549
  • 15.9. Vkládání kódu C do překryvných vrstev 550
  • 15.10. Použití Cythonu k překrytí existujícího kódu C 555
  • 15.11. Použití Cythonu k zápisu efektivních operací s polem 560
  • 15.12. Převod ukazatele na funkci do volatelné jednotky
  • 15.13. Předávání řetězců zakončených NULL do knihoven C.
  • 15.14. Předávání řetězců Unicode do knihoven C.
  • 15.15. Převod řetězců z C na jejich ekvivalenty v Pythonu 573
  • 15.16. Používání neznámých kódovacích řetězců daných z C 574
  • 15.17. Předávání názvů souborů příponám na C.
  • 15.18. Předávání otevřených souborů do rozšíření jazyka C
  • 15,19. Načítání dat z objektů podobných souborům v C.
  • 15.20. Získání iterovatelných objektů v jazyce C.
  • 15.21. Diagnostika chyb segmentace 582

A. Další čtení (585)

Rejstřík (587)

Kniha - autor David Beazley, Brian K. Jones
Kniha - ISBN 978-83-246-8180-8
Kniha - vazba měkký
Kniha - vydavatel Helion
Šířka balení 0.001 cm
Výška balení 0.001 cm
Hloubka balení 0.001 cm
Váha balení 0.001 kg

Buďte první, kdo se zeptá na tento produkt!

Zákazníci, kteří koupili tento produkt, koupili také:

Produkty ze stejné kategorie: