reklama - zainteresowany?

Efektywny Python. 90 sposobów na lepszy kod. Wydanie II - Helion

Efektywny Python. 90 sposobów na lepszy kod. Wydanie II
ebook
Autor: Brett Slatkin
Tytuł oryginału: Effective Python: 90 Specific Ways to Write Better Python (2nd Edition) (Effective Software Development Series)
Tłumaczenie: Robert Górczyński
ISBN: 978-83-283-6733-3
stron: 408, Format: ebook
Data wydania: 2020-07-01
Księgarnia: Helion

Cena książki: 59,25 zł (poprzednio: 79,00 zł)
Oszczędzasz: 25% (-19,75 zł)

Dodaj do koszyka Efektywny Python. 90 sposobów na lepszy kod. Wydanie II

Tagi: Python - Programowanie

Python sÅ‚usznie cieszy siÄ™ stale rosnÄ…cym uznaniem programistów: jest wszechstronny i efektywny, pozwala też na tworzenie wysokiej jakoÅ›ci oprogramowania. JÄ™zyk ten ma poza tym wiele trudniejszych do uchwycenia zalet. Aby uzyskać naprawdÄ™ imponujÄ…ce efekty w zakresie wydajnoÅ›ci kodu, jego przenaszalnoÅ›ci i bezpieczeÅ„stwa, trzeba zagÅ‚Ä™bić siÄ™ w dość subtelne niuanse kodowania. Wielu programistów, choć posiada spore doÅ›wiadczenie w programowaniu w innych jÄ™zykach, nie dostrzega tych zależnoÅ›ci. Z kolei osoby dopiero rozpoczynajÄ…ce przygodÄ™ z programowaniem mogÄ… poczuć siÄ™ zaskoczone i zdezorientowane, jeÅ›li nie zdoÅ‚ajÄ… uniknąć kilku nieoczywistych bÅ‚Ä™dów podczas pracy.

To drugie, zaktualizowane i uzupeÅ‚nione wydanie podrÄ™cznika programowania w duchu Pythona. Zawarty tu materiaÅ‚ umożliwia wykorzystanie tego jÄ™zyka do tworzenia wyjÄ…tkowo solidnego i niezwykle wydajnego kodu źródÅ‚owego. Książka jest napisana w zwiÄ™zÅ‚ym stylu i ma przemyÅ›lany ukÅ‚ad, oparty na scenariuszach, dziÄ™ki czemu przystÄ™pnie przedstawia 90 najlepszych praktyk, wskazówek i skrótów oraz wyjaÅ›nia ich dziaÅ‚anie na rzeczywistych przykÅ‚adach kodu. Pokazano tu szereg maÅ‚o znanych, być może nieco dziwnych sztuczek i sposobów udoskonalajÄ…cych pracÄ™ kodu źródÅ‚owego. Przyswojenie zaprezentowanych tu praktyk pozwoli Ci tworzyć kod Å‚atwy do zrozumienia, obsÅ‚ugi i dalszej rozbudowy. W tym wydaniu treść poszczególnych wskazówek zaktualizowano do Pythona 3, a poszczególne przykÅ‚ady kodu zostaÅ‚y przejrzane i udoskonalone - najlepsze praktyki również ewoluujÄ…!

W tej książce:

  • nowe rozwiÄ…zania dla wszystkich najważniejszych obszarów programowania w Pythonie
  • techniki stosowania konstrukcji skÅ‚adanych i funkcji generatorów
  • wÅ‚aÅ›ciwe korzystanie z klas, obiektów, metaklas i atrybutów dynamicznych
  • wspóÅ‚bieżność, równolegÅ‚ość, optymalizacja i bezpieczeÅ„stwo kodu
  • wbudowane moduÅ‚y Pythona do debugowania i testowania
  • narzÄ™dzia i najlepsze praktyki podczas wspólnej pracy nad projektami

Python: elegancja, wydajność i ekspresja kodu!

Dodaj do koszyka Efektywny Python. 90 sposobów na lepszy kod. Wydanie II

 

Osoby które kupowały "Efektywny Python. 90 sposobów na lepszy kod. Wydanie II", wybierały także:

  • GraphQL. Kurs video. Buduj nowoczesne API w Pythonie
  • Receptura na Python. Kurs Video. 54 praktyczne porady dla programist
  • Podstawy Pythona z Minecraftem. Kurs video. Piszemy pierwsze skrypty
  • Twórz gry w Pythonie. Kurs video. Poznaj bibliotekÄ™ PyGame
  • Data Science w Pythonie. Kurs video. Algorytmy uczenia maszynowego

Dodaj do koszyka Efektywny Python. 90 sposobów na lepszy kod. Wydanie II

Spis treści

Efektywny Python. 90 sposobów na lepszy kod. Wydanie II eBook -- spis treści


Wprowadzenie 11

Podziękowania 15

O autorze 17

Rozdział 1. Programowanie zgodne z duchem Pythona 19

  • Sposób 1. Ustalenie używanej wersji Pythona 19
  • Sposób 2. Stosuj styl PEP 8 21
  • Sposób 3. Różnice miÄ™dzy typami bytes i str 23
  • Sposób 4. Wybieraj interpolowane ciÄ…gi tekstowe f zamiast ciÄ…gów tekstowych formatowania w stylu C i funkcji str.format() 28
  • Sposób 5. Decyduj siÄ™ na funkcje pomocnicze zamiast na skomplikowane wyrażenia 38
  • Sposób 6. Zamiast indeksowania wybieraj rozpakowanie wielu operacji przypisania 41
  • Sposób 7. Preferuj użycie funkcji enumerate() zamiast range() 44
  • Sposób 8. Używaj funkcji zip() do równoczesnego przetwarzania iteratorów 46
  • Sposób 9. Unikaj bloków else po pÄ™tlach for i while 48
  • Sposób 10. Unikaj powtórzeÅ„ w wyrażeniach przypisania 50

Rozdział 2. Lista i słownik 57

  • Sposób 11. UmiejÄ™tnie podziel sekwencje 57
  • Sposób 12. Unikaj użycia indeksów poczÄ…tek, koniec i wartoÅ›ci kroku w pojedynczej operacji podziaÅ‚u 60
  • Sposób 13. Wybieraj rozpakowanie typu catch-all zamiast tworzenia wycinków 62
  • Sposób 14. Używaj parametru key podczas sortowania wedÅ‚ug skomplikowanych kryteriów 66
  • Sposób 15. Zachowaj ostrożność, gdy polegasz na kolejnoÅ›ci wstawiania elementów do obiektu typu dict 71
  • Sposób 16. Podczas obsÅ‚ugi brakujÄ…cych kluczy sÅ‚ownika wybieraj funkcjÄ™ get() zamiast operatora in i wyjÄ…tku KeyError 78
  • Sposób 17. Podczas obsÅ‚ugi brakujÄ…cych elementów w wewnÄ™trznym stanie wybieraj typ defaultdict zamiast metody setdefault() 82
  • Sposób 18. Wykorzystaj metodÄ™ __missing__() do tworzenia wartoÅ›ci domyÅ›lnych w zależnoÅ›ci od klucza 84

Rozdział 3. Funkcje 89

  • Sposób 19. Gdy funkcja zwraca wiele wartoÅ›ci, nie rozpakowuj wiÄ™cej niż trzech zmiennych 89
  • Sposób 20. Preferuj wyjÄ…tki zamiast zwrotu wartoÅ›ci None 92
  • Sposób 21. Zobacz, jak domkniÄ™cia wspóÅ‚dziaÅ‚ajÄ… z zakresem zmiennej 95
  • Sposób 22. Zmniejszenie wizualnego zagmatwania za pomocÄ… zmiennej liczby argumentów pozycyjnych 98
  • Sposób 23. Zdefiniowanie zachowania opcjonalnego za pomocÄ… argumentów w postaci sÅ‚ów kluczowych 101
  • Sposób 24. Użycie None i docstring w celu dynamicznego okreÅ›lenia argumentów domyÅ›lnych 105
  • Sposób 25. Wymuszaj czytelność kodu, stosujÄ…c jedynie argumenty w postaci sÅ‚ów kluczowych 108
  • Sposób 26. Dekoratory funkcji definiuj za pomocÄ… functools.wraps 112

Rozdział 4. Konstrukcje składane i generatory 117

  • Sposób 27. Używaj list skÅ‚adanych zamiast funkcji map() i filter() 117
  • Sposób 28. Unikaj wiÄ™cej niż dwóch wyrażeÅ„ na liÅ›cie skÅ‚adanej 119
  • Sposób 29. Stosuj wyrażenia przypisania, aby unikać powielania zadaÅ„ w konstrukcjach skÅ‚adanych 121
  • Sposób 30. Rozważ użycie generatorów, zamiast zwracać listy 124
  • Sposób 31. Podczas iteracji przez argumenty zachowuj postawÄ™ defensywnÄ… 126
  • Sposób 32. Rozważ użycie generatora wyrażeÅ„ dla dużych list skÅ‚adanych 131
  • Sposób 33. Twórz wiele generatorów za pomocÄ… wyrażenia yield from 132
  • Sposób 34. Unikaj wstrzykiwania danych do generatorów za pomocÄ… metody send() 135
  • Sposób 35. Unikaj w generatorach przejÅ›cia miÄ™dzy stanami za pomocÄ… metody throw() 140
  • Sposób 36. Rozważ stosowanie moduÅ‚u itertools w pracy z iteratorami i generatorami 144

Rozdział 5. Klasy i interfejsy 151

  • Sposób 37. Twórz klasy, zamiast zagnieżdżać wiele poziomów typów wbudowanych 151
  • Sposób 38. Dla prostych interfejsów akceptuj funkcje zamiast klas 157
  • Sposób 39. Użycie polimorfizmu @classmethod w celu ogólnego tworzenia obiektów 160
  • Sposób 40. Inicjalizacja klasy nadrzÄ™dnej za pomocÄ… wywoÅ‚ania super() 165
  • Sposób 41. Rozważ Å‚Ä…czenie funkcjonalnoÅ›ci za pomocÄ… klas domieszek 169
  • Sposób 42. Preferuj atrybuty publiczne zamiast prywatnych 173
  • Sposób 43. Stosuj dziedziczenie po collections.abc w kontenerach typów niestandardowych 178

Rozdział 6. Metaklasy i atrybuty 183

  • Sposób 44. Używaj zwykÅ‚ych atrybutów zamiast metod typu getter i setter 183
  • Sposób 45. Rozważ użycie @property zamiast refaktoryzacji atrybutów 187
  • Sposób 46. Stosuj deskryptory, aby wielokrotnie wykorzystywać metody udekorowane przez @property 191
  • Sposób 47. Używaj metod __getattr__(), __getattribute__() i __setattr__() dla opóźnionych atrybutów 196
  • Sposób 48. Sprawdzaj podklasy za pomocÄ… __init_subclass__ 201
  • Sposób 49. Rejestruj istniejÄ…ce klasy za pomocÄ… __init_subclass__() 208
  • Sposób 50. Adnotacje atrybutów klas dodawaj za pomocÄ… metody __set_name__() 212
  • Sposób 51. Dla zÅ‚ożonych rozszerzeÅ„ klas wybieraj dekoratory klas zamiast metaklas 216

RozdziaÅ‚ 7. WspóÅ‚bieżność i równolegÅ‚ość 223

  • Sposób 52. Używaj moduÅ‚u subprocess do zarzÄ…dzania procesami potomnymi 224
  • Sposób 53. Użycie wÄ…tków dla operacji blokujÄ…cych wejÅ›cie- yjÅ›cie, unikanie równolegÅ‚oÅ›ci 228
  • Sposób 54. Używaj klasy Lock, aby unikać stanu wyÅ›cigu w wÄ…tkach 232
  • Sposób 55. Używaj klasy Queue do koordynacji pracy miÄ™dzy wÄ…tkami 236
  • Sposób 56. Naucz siÄ™ rozpoznawać, kiedy wspóÅ‚bieżność jest niezbÄ™dna 244
  • Sposób 57. Unikaj tworzenia nowych egzemplarzy Thread na żądanie fan-out 248
  • Sposób 58. PamiÄ™taj, że stosowanie Queue do obsÅ‚ugi wspóÅ‚bieżnoÅ›ci wymaga refaktoringu 252
  • Sposób 59. Rozważ użycie klasy ThreadPoolExecutor, gdy wÄ…tki sÄ… potrzebne do zapewnienia wspóÅ‚bieżnoÅ›ci 258
  • Sposób 60. Zapewnij wysokÄ… wspóÅ‚bieżność operacji wejÅ›cia-wyjÅ›cia dziÄ™ki użyciu wspóÅ‚programów 260
  • Sposób 61. Naucz siÄ™ przekazywać do asyncio wÄ…tkowane operacje wejÅ›cia-wyjÅ›cia 264
  • Sposób 62. PoÅ‚Ä…czenie wÄ…tków i wspóÅ‚programów w celu uÅ‚atwienia konwersji na wersjÄ™ stosujÄ…cÄ… asyncio 274
  • Sposób 63. Maksymalizuj responsywność przez unikanie blokujÄ…cej pÄ™tli zdarzeÅ„ asyncio 280
  • Sposób 64. Rozważ użycie concurrent.futures(), aby otrzymać prawdziwÄ… równolegÅ‚ość 283

Rozdział 8. Niezawodność i wydajność 289

  • Sposób 65. Wykorzystanie zalet wszystkich bloków w konstrukcji try-except-else-finally 289
  • Sposób 66. Rozważ użycie poleceÅ„ contextlib i with w celu uzyskania wielokrotnego użycia konstrukcji try-finally 294
  • Sposób 67. Podczas obsÅ‚ugi czasu lokalnego używaj moduÅ‚u datetime zamiast time 297
  • Sposób 68. Niezawodne użycie pickle wraz z copyreg 301
  • Sposób 69. Gdy ważna jest precyzja, używaj moduÅ‚u decimal 307
  • Sposób 70. Przed optymalizacjÄ… przeprowadzaj profilowanie 310
  • Sposób 71. Wybieraj typ deque podczas tworzenia kolejek typu producent - konsument 314
  • Sposób 72. Podczas wyszukiwania danych w sortowanych sekwencjach stosuj moduÅ‚ bisect 321
  • Sposób 73. W kolejkach priorytetowych używaj moduÅ‚u heapq 323
  • Sposób 74. Podczas kopiowania zerowego obiektów typu bytes używaj egzemplarzy memoryview i bytearray 331

Rozdział 9. Testowanie i debugowanie 337

  • Sposób 75. Używaj ciÄ…gów tekstowych repr do debugowania danych wyjÅ›ciowych 338
  • Sposób 76. W podklasach klasy TestCase sprawdzaj powiÄ…zane ze sobÄ… zachowanie 341
  • Sposób 77. Izoluj testy od siebie za pomocÄ… metod setUp(), tearDown(), setUpModule() i tearDownModule() 348
  • Sposób 78. Podczas testowania kodu zawierajÄ…cego skomplikowane zależnoÅ›ci korzystaj z imitacji 350
  • Sposób 79. Hermetyzuj zależnoÅ›ci, aby uÅ‚atwić tworzenie imitacji i testowanie 357
  • Sposób 80. Rozważ interaktywne usuwanie bÅ‚Ä™dów za pomocÄ… pdb 361
  • Sposób 81. Stosuj moduÅ‚ tracemalloc, aby poznać sposób użycia pamiÄ™ci i wykryć jej wycieki 365

RozdziaÅ‚ 10. WspóÅ‚praca 369

  • Sposób 82. Kiedy szukać moduÅ‚ów opracowanych przez spoÅ‚eczność? 369
  • Sposób 83. Używaj Å›rodowisk wirtualnych dla odizolowanych i powtarzalnych zależnoÅ›ci 370
  • Sposób 84. Dla każdej funkcji, klasy i moduÅ‚u utwórz docstring 375
  • Sposób 85. Używaj pakietów do organizacji moduÅ‚ów i dostarczania stabilnych API 380
  • Sposób 86. Rozważ użycie kodu o zasiÄ™gu moduÅ‚u w celu konfiguracji Å›rodowiska wdrożenia 385
  • Sposób 87. Zdefiniuj gÅ‚ówny wyjÄ…tek Exception w celu odizolowania komponentu wywoÅ‚ujÄ…cego od API 387
  • Sposób 88. Zobacz, jak przerwać krÄ…g zależnoÅ›ci 391
  • Sposób 89. Rozważ użycie moduÅ‚u warnings podczas refaktoryzacji i migracji kodu 395
  • Sposób 90. Rozważ stosowanie analizy statycznej za pomocÄ… moduÅ‚u typing w celu usuwania bÅ‚Ä™dów 401

Dodaj do koszyka Efektywny Python. 90 sposobów na lepszy kod. Wydanie II

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.