Dodano produkt do koszyka

Promocja

EFEKTYWNY PYTHON 90 SPOSÓB NA LEPSZY KOD wyd.2

EFEKTYWNY PYTHON 90 SPOSÓB NA LEPSZY KOD wyd.2

BRETT SLATKIN

Wydawnictwo: HELION

Cena: 79.00 zł 62.41 brutto

Koszty dostawy:
  • Paczkomaty InPost 14.99 zł brutto
  • Poczta Polska - odbiór w punkcie 9.99 zł brutto
  • Poczta Polska - przedpłata 15.99 zł brutto
  • Poczta Polska - pobranie 19.99 zł brutto
  • Kurier DHL - przedpłata 18.99 zł brutto
  • Kurier DHL - pobranie 21.99 zł brutto
  • Odbiór osobisty - UWAGA - uprzejmie prosimy poczekać na informację z księgarni o możliwości odbioru zamówienia - 0.00 zł brutto

Opis

Opis produktu

ISBN: 978-83-283-6732-6.

408 stron
format: B5
oprawa: miękka
Rok wydania: 2020

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ą!

SPIS TREŚCI

Wprowadzenie

Podziękowania

O autorze

Rozdział 1. Programowanie zgodne z duchem Pythona
Sposób 1. Ustalenie używanej wersji Pythona
Sposób 2. Stosuj styl PEP 8
Sposób 3. Różnice między typami bytes i str
Sposób 4. Wybieraj interpolowane ciągi tekstowe f zamiast ciągów tekstowych formatowania w stylu C i funkcji str.format()
Sposób 5. Decyduj się na funkcje pomocnicze zamiast na skomplikowane wyrażenia
Sposób 6. Zamiast indeksowania wybieraj rozpakowanie wielu operacji przypisania
Sposób 7. Preferuj użycie funkcji enumerate() zamiast range()
Sposób 8. Używaj funkcji zip() do równoczesnego przetwarzania iteratorów
Sposób 9. Unikaj bloków else po pętlach for i while
Sposób 10. Unikaj powtórzeń w wyrażeniach przypisania

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

Rozdział 3. Funkcje
Sposób 19. Gdy funkcja zwraca wiele wartości, nie rozpakowuj więcej niż trzech zmiennych
Sposób 20. Preferuj wyjątki zamiast zwrotu wartości None
Sposób 21. Zobacz, jak domknięcia współdziałają z zakresem zmiennej
Sposób 22. Zmniejszenie wizualnego zagmatwania za pomocą zmiennej liczby argumentów pozycyjnych
Sposób 23. Zdefiniowanie zachowania opcjonalnego za pomocą argumentów w postaci słów kluczowych
Sposób 24. Użycie None i docstring w celu dynamicznego określenia argumentów domyślnych
Sposób 25. Wymuszaj czytelność kodu, stosując jedynie argumenty w postaci słów kluczowych
Sposób 26. Dekoratory funkcji definiuj za pomocą functools.wraps

Rozdział 4. Konstrukcje składane i generatory
Sposób 27. Używaj list składanych zamiast funkcji map() i filter()
Sposób 28. Unikaj więcej niż dwóch wyrażeń na liście składanej
Sposób 29. Stosuj wyrażenia przypisania, aby unikać powielania zadań w konstrukcjach składanych
Sposób 30. Rozważ użycie generatorów, zamiast zwracać listy
Sposób 31. Podczas iteracji przez argumenty zachowuj postawę defensywną
Sposób 32. Rozważ użycie generatora wyrażeń dla dużych list składanych
Sposób 33. Twórz wiele generatorów za pomocą wyrażenia yield from
Sposób 34. Unikaj wstrzykiwania danych do generatorów za pomocą metody send()
Sposób 35. Unikaj w generatorach przejścia między stanami za pomocą metody throw()
Sposób 36. Rozważ stosowanie modułu itertools w pracy z iteratorami i generatorami

Rozdział 5. Klasy i interfejsy
Sposób 37. Twórz klasy, zamiast zagnieżdżać wiele poziomów typów wbudowanych
Sposób 38. Dla prostych interfejsów akceptuj funkcje zamiast klas
Sposób 39. Użycie polimorfizmu @classmethod w celu ogólnego tworzenia obiektów
Sposób 40. Inicjalizacja klasy nadrzędnej za pomocą wywołania super()
Sposób 41. Rozważ łączenie funkcjonalności za pomocą klas domieszek
Sposób 42. Preferuj atrybuty publiczne zamiast prywatnych
Sposób 43. Stosuj dziedziczenie po collections.abc w kontenerach typów niestandardowych

Rozdział 6. Metaklasy i atrybuty
Sposób 44. Używaj zwykłych atrybutów zamiast metod typu getter i setter
Sposób 45. Rozważ użycie @property zamiast refaktoryzacji atrybutów
Sposób 46. Stosuj deskryptory, aby wielokrotnie wykorzystywać metody udekorowane przez @property
Sposób 47. Używaj metod __getattr__(), __getattribute__() i __setattr__() dla opóźnionych atrybutów
Sposób 48. Sprawdzaj podklasy za pomocą __init_subclass__
Sposób 49. Rejestruj istniejące klasy za pomocą __init_subclass__()
Sposób 50. Adnotacje atrybutów klas dodawaj za pomocą metody __set_name__()
Sposób 51. Dla złożonych rozszerzeń klas wybieraj dekoratory klas zamiast metaklas

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

Rozdział 8. Niezawodność i wydajność
Sposób 65. Wykorzystanie zalet wszystkich bloków w konstrukcji try-except-else-finally
Sposób 66. Rozważ użycie poleceń contextlib i with w celu uzyskania wielokrotnego użycia konstrukcji try-finally
Sposób 67. Podczas obsługi czasu lokalnego używaj modułu datetime zamiast time
Sposób 68. Niezawodne użycie pickle wraz z copyreg
Sposób 69. Gdy ważna jest precyzja, używaj modułu decimal
Sposób 70. Przed optymalizacją przeprowadzaj profilowanie
Sposób 71. Wybieraj typ deque podczas tworzenia kolejek typu producent - konsument
Sposób 72. Podczas wyszukiwania danych w sortowanych sekwencjach stosuj moduł bisect
Sposób 73. W kolejkach priorytetowych używaj modułu heapq
Sposób 74. Podczas kopiowania zerowego obiektów typu bytes używaj egzemplarzy memoryview i bytearray

Rozdział 9. Testowanie i debugowanie
Sposób 75. Używaj ciągów tekstowych repr do debugowania danych wyjściowych
Sposób 76. W podklasach klasy TestCase sprawdzaj powiązane ze sobą zachowanie
Sposób 77. Izoluj testy od siebie za pomocą metod setUp(), tearDown(), setUpModule() i tearDownModule()
Sposób 78. Podczas testowania kodu zawierającego skomplikowane zależności korzystaj z imitacji
Sposób 79. Hermetyzuj zależności, aby ułatwić tworzenie imitacji i testowanie
Sposób 80. Rozważ interaktywne usuwanie błędów za pomocą pdb
Sposób 81. Stosuj moduł tracemalloc, aby poznać sposób użycia pamięci i wykryć jej wycieki

Rozdział 10. Współpraca
Sposób 82. Kiedy szukać modułów opracowanych przez społeczność?
Sposób 83. Używaj środowisk wirtualnych dla odizolowanych i powtarzalnych zależności
Sposób 84. Dla każdej funkcji, klasy i modułu utwórz docstring
Sposób 85. Używaj pakietów do organizacji modułów i dostarczania stabilnych API
Sposób 86. Rozważ użycie kodu o zasięgu modułu w celu konfiguracji środowiska wdrożenia
Sposób 87. Zdefiniuj główny wyjątek Exception w celu odizolowania komponentu wywołującego od API
Sposób 88. Zobacz, jak przerwać krąg zależności
Sposób 89. Rozważ użycie modułu warnings podczas refaktoryzacji i migracji kodu
Sposób 90. Rozważ stosowanie analizy statycznej za pomocą modułu typing w celu usuwania błędów

Kod wydawnictwa: 978-83-283-6732-6

Opinie, recenzje, testy:

Ten produkt nie ma jeszcze opinii

Twoja opinia

aby wystawić opinię.

Ocena:
  • Wszystkie pola są wymagane
Zapytaj o produkt

Produkty powiązane

Kontakt

Księgarnia Ekonomiczna Kazimierz Leki Sp. z o.o.

ul. Grójecka 67

02-094 Warszawa

NIP: 7010414095

Tel. 22 822 90 41

www.24naukowa.com.pl

naukowa@ksiegarnia-ekonomiczna.com.pl