Twórz zoptymalizowany i efektywny kod!
Python to jeden z najstarszych używanych języków programowania. Co ciekawe, jego nazwa wcale nie pochodzi od zwierzęcia, a od popularnego serialu komediowego. Język ten daje programistom ogromne pole do popisu, a ponadto posiada sporo bibliotek realizujących najbardziej wymyślne zadania. Z uwagi na te atuty rozpoczęcie programowania w tym języku nie powinno przysporzyć Ci większych problemów. Jeżeli jednak chcesz robić to efektywnie, potrzebujesz tej książki.
Sięgnij po nią i poznaj 59 sposobów na tworzenie lepszego kodu w Pythonie! W kolejnych rozdziałach znajdziesz bezcenne informacje na temat programowania zgodnego z duchem Pythona, funkcji, klas i dziedziczenia oraz metaklas i atrybutów. Dalsze strony zawierają przydatną wiedzę na temat wątków i współbieżności, wbudowanych modułów oraz sposobów zarządzania kodem. Książka ta sprawdzi się w rękach każdego programisty pracującego w języku Python. Warto ją mieć!
W książce poruszono następujące zagadnienia:
Podpowiedzi na wszystkich najważniejszych obszarach programowania w Pythonie 3.x i 2.x wraz z dokładnymi objaśnieniami i przykładami.
Najlepsze praktyki dotyczące tworzenia funkcji czytelnie wyrażających intencje, promujących wielokrotne użycie tego samego kodu i pomagających uniknąć błędów.
Omówienie tematu właściwego wyrażenia zachowania programu za pomocą klas i obiektów.
Podpowiedzi pomagające uniknąć pułapek podczas użycia metaklas i atrybutów dynamicznych.
Prezentacja znacznie efektywniejszego podejścia w zakresie współbieżności i równoległości.
Przedstawienie lepszych technik i sposobów użycia wbudowanych modułów Pythona.
Prezentacja narzędzi i najlepszych praktyk stosowanych podczas wspólnej pracy nad projektami.
Rozwiązania dotyczące usuwania błędów, testowania i optymalizacji, co prowadzi do poprawy jakości kodu i wydajności jego działania.
Poznaj najlepsze praktyki programowania w Pythonie!
Author(s): Brett Slatkin
Edition: 1st
Publisher: Helion
Year: 2015
Language: Polish
Pages: 229
Spis treści......Page 4
Wprowadzenie......Page 8
Podziękowania......Page 12
O autorze......Page 14
Sposób 1. Ustalenie używanej wersji Pythona......Page 16
Skorowidz......Page 0
Sposób 4. Decyduj się na funkcje pomocnicze zamiast na skomplikowane wyrażenia......Page 23
Sposób 5. Umiejętnie podziel sekwencje......Page 26
Sposób 6. Unikaj użycia indeksów początek, koniec i wartości kroku w pojedynczej operacji podziału......Page 28
Sposób 7. Używaj list składanych zamiast funkcji map() i filter()......Page 30
Sposób 8. Unikaj więcej niż dwóch wyrażeń na liście składanej......Page 32
Sposób 9. Rozważ użycie generatora wyrażeń dla dużych list składanych......Page 33
Sposób 10. Preferuj użycie funkcji enumerate() zamiast range()......Page 35
Sposób 11. Użycie funkcji zip() do równoczesnego przetwarzania iteratorów......Page 36
Sposób 12. Unikaj bloków else po pętlach for i while......Page 38
Sposób 13. Wykorzystanie zalet wszystkich bloków w konstrukcji try-except-else-finally......Page 41
Sposób 14. Preferuj wyjątki zamiast zwrotu wartości None......Page 44
Sposób 15. Zobacz, jak domknięcia współdziałają z zakresem zmiennej......Page 46
Sposób 16. Rozważ użycie generatorów, zamiast zwracać listy......Page 51
Sposób 17. Podczas iteracji przez argumenty zachowuj postawę defensywną......Page 53
Sposób 18. Zmniejszenie wizualnego zagmatwania za pomocą zmiennej liczby argumentów pozycyjnych......Page 58
Sposób 19. Zdefiniowanie zachowania opcjonalnego za pomocą argumentów w postaci słów kluczowych......Page 60
Sposób 20. Użycie None i docstring w celu dynamicznego określenia argumentów domyślnych......Page 63
Sposób 21. Wymuszaj czytelność kodu, stosując jedynie argumenty w postaci słów kluczowych......Page 66
Sposób 22. Preferuj klasy pomocnicze zamiast słowników i krotek......Page 70
Sposób 23. Dla prostych interfejsów akceptuj funkcje zamiast klas......Page 75
Sposób 24. Użycie polimorfizmu @classmethod w celu ogólnego tworzenia obiektów......Page 79
Sposób 25. Inicjalizacja klasy nadrzędnej za pomocą wywołania super()......Page 84
Sposób 26. Wielokrotnego dziedziczenia używaj jedynie w klasach narzędziowych......Page 88
Sposób 27. Preferuj atrybuty publiczne zamiast prywatnych......Page 92
Sposób 28. Dziedziczenie po collections.abc w kontenerach typów niestandardowych......Page 96
Sposób 29. Używaj zwykłych atrybutów zamiast metod typu getter i setter......Page 102
Sposób 30. Rozważ użycie @property zamiast refaktoryzacji atrybutów......Page 106
Sposób 31. Stosuj deskryptory, aby wielokrotnie wykorzystywać metody udekorowane przez @property......Page 110
Sposób 32. Używaj metod __getattr__(), __getattribute__() i __setattr__() dla opóźnionych atrybutów......Page 114
Sposób 33. Sprawdzaj podklasy za pomocą metaklas......Page 119
Sposób 34. Rejestruj istniejące klasy wraz z metaklasami......Page 121
Sposób 35. Adnotacje atrybutów klas dodawaj za pomocą metaklas......Page 125
Rozdział 5. Współbieżność i równoległość......Page 128
Sposób 36. Używaj modułu subprocess do zarządzania procesami potomnymi......Page 129
Sposób 37. Użycie wątków dla operacji blokujących wejście-wyjście, unikanie równoległości......Page 133
Sposób 38. Używaj klasy Lock, aby unikać stanu wyścigu w wątkach......Page 137
Sposób 39. Używaj klasy Queue do koordynacji pracy między wątkami......Page 140
Sposób 40. Rozważ użycie współprogramów w celu jednoczesnego wykonywania wielu funkcji......Page 147
Sposób 41. Rozważ użycie concurrent.futures(), aby otrzymać prawdziwą równoległość......Page 155
Sposób 42. Dekoratory funkcji definiuj za pomocą functools.wraps......Page 160
Sposób 43. Rozważ użycie poleceń contextlib i with w celu uzyskania wielokrotnego użycia konstrukcji try-finally......Page 163
Sposób 44. Niezawodne użycie pickle wraz z copyreg......Page 166
Sposób 45. Podczas obsługi czasu lokalnego używaj modułu datetime zamiast time......Page 171
Sposób 46. Używaj wbudowanych algorytmów i struktur danych......Page 175
Sposób 47. Gdy ważna jest precyzja, używaj modułu decimal......Page 180
Sposób 48. Kiedy szukać modułów opracowanych przez społeczność?......Page 182
Sposób 49. Dla każdej funkcji, klasy i modułu utwórz docstring......Page 184
Sposób 50. Używaj pakietów do organizacji modułów i dostarczania stabilnych API......Page 188
Sposób 51. Zdefiniuj główny wyjątek Exception w celu odizolowania komponentu wywołującego od API......Page 193
Sposób 52. Zobacz, jak przerwać krąg zależności......Page 196
Sposób 53. Używaj środowisk wirtualnych dla odizolowanych i powtarzalnych zależności......Page 201
Sposób 54. Rozważ użycie kodu o zasięgu modułu w celu konfiguracji środowiska wdrożenia......Page 208
Sposób 55. Używaj ciągów tekstowych repr do debugowania danych wyjściowych......Page 211
Sposób 56. Testuj wszystko za pomocą unittest......Page 214
Sposób 57. Rozważ interaktywne usuwanie błędów za pomocą pdb......Page 217
Sposób 58. Przed optymalizacją przeprowadzaj profilowanie......Page 219
Sposób 59. Stosuj moduł tracemalloc, aby poznać sposób użycia pamięci i wykryć jej wycieki......Page 223
Skorowidz......Page 226
Sposób 2. Stosuj styl PEP 8......Page 18
Sposób 3. Różnice między typami bytes, str i unicode......Page 20