E-book details

Profesjonalne programowanie w Pythonie. Poznaj najlepsze praktyki kodowania i zaawansowane koncepcje programowania. Wydanie IV

Profesjonalne programowanie w Pythonie. Poznaj najlepsze praktyki kodowania i zaawansowane koncepcje programowania. Wydanie IV

Michał Jaworski, Tarek Ziadé

Ebook

Python cechuje się dużą prostotą, a przy tym jest wszechstronny. Ma bardzo szeroki zakres zastosowania, przez co coraz więcej osób podejmuje naukę programowania w tym języku. Python należy do języków najczęściej używanych przez programistów, którzy tworzą w nim gry i aplikacje webowe. Świetnie sprawdza się ponadto w pracy z wykorzystaniem sztucznej inteligencji i uczenia maszynowego. Tym, co programiści doceniają w Pythonie, jest też obiektywność. Ucząc się, przyswajamy bowiem również zasady programowania obiektywnego, a więc koncepcji dla wielu innych języków.

Oto książka, którą docenią i osoby rozpoczynające przygodę z programowaniem, i programiści znający już inne języki. Znajdziesz tu zarówno podstawowe informacje o Pythonie, jak i wskazówki dotyczące pisania rozszerzeń, dzięki którym będziesz w stanie korzystać z atutów kilku języków. Przydatnym uzupełnieniem są liczne przykłady, pokazujące, jak rozwiązywać częste problemy. To już czwarte wydanie tego praktycznego podręcznika ? docenianego za to, że pozwala dobrze poznać Pythona i uczy, jak pisać wydajny i czytelny kod.

Z książki dowiesz się:

  • jakie są najważniejsze usprawnienia w Pythonie
  • jak przeprowadzić izolację środowiska
  • jak używać najnowszych funkcji w Pythonie
  • czym Python się różni od innych języków
  • co to jest współbieżność i wielowątkowość
  • na czym polega programowanie sterowane zdarzeniami
  • jakie są elementy metaprogramowania
  • jak przeprowadzić automatyzację kontroli jakości
  • jak optymalizować kod

Koduj wszystko w Pythonie. Obiektywnie, strukturalnie i funkcjonalnie!

O autorach

O recenzencie

Przedmowa

Rozdział 1. Aktualny stan Pythona

  • Gdzie jesteśmy i dokąd zmierzamy?
  • Co zrobić z kodem w Pythonie 2?
  • Jak być na bieżąco?
    • Dokumenty PEP
    • Aktywne społeczności
    • Inne źródła informacji
  • Podsumowanie

Rozdział 2. Nowoczesne środowiska programistyczne Pythona

  • Wymagania techniczne
  • Ekosystem pakietów Pythona
    • Instalowanie pakietów Pythona za pomocą narzędzia pip
  • Izolowanie środowiska uruchomieniowego
    • Izolacja na poziomie aplikacji a izolacja na poziomie systemu
  • Izolacja środowiska na poziomie aplikacji
    • Poetry jako system zarządzania zależnościami
  • Izolacja środowiska na poziomie systemu
    • Konteneryzacja a wirtualizacja
    • Zarządzanie środowiskami wirtualnymi z użyciem Dockera
    • Wirtualne środowiska programistyczne oparte na narzędziu Vagrant
  • Popularne narzędzia do zwiększania produktywności
    • Niestandardowe powłoki Pythona
    • Stosowanie powłoki IPython
    • Stosowanie powłok we własnych skryptach i programach
    • Interaktywne debugery
    • Inne narzędzia do zwiększania produktywności
  • Podsumowanie

Rozdział 3. Nowości w Pythonie

  • Wymagania techniczne
  • Niedawne dodatki do języka
    • Operatory scalania i aktualizacji słownika
    • Wyrażenia przypisania
    • Wskazówki dotyczące typów w typach generycznych
    • Parametry czysto pozycyjne
    • Moduł zoneinfo
    • Moduł graphlib
  • Nie tak nowe, ale wciąż błyszczące
    • Funkcja breakpoint()
    • Tryb roboczy
    • Funkcje __getattr__() i __dir__() na poziomie modułu
    • Formatowanie łańcuchów znaków za pomocą obiektów f-string
    • Podkreślenia w literałach liczbowych
    • Moduł secrets
  • Co może się pojawić w przyszłości?
    • Tworzenie sumy typów za pomocą operatora |
    • Strukturalne dopasowywanie wzorców
  • Podsumowanie

Rozdział 4. Porównanie Pythona z innymi językami

  • Wymagania techniczne
  • Model klas i programowanie obiektowe
    • Dostęp do klas bazowych
    • Wielodziedziczenie i porządek MRO
    • Inicjalizowanie instancji klasy
    • Wzorce dostępu do atrybutów
    • Deskryptory
    • Właściwości
  • Dynamiczny polimorfizm
    • Przeciążanie operatorów
    • Przeciążanie funkcji i metod
  • Klasy danych
  • Programowanie funkcyjne
    • Funkcje lambda
    • Funkcje map(), filter() i reduce()
    • Obiekty i funkcje częściowe
    • Generatory
    • Wyrażenia generatora
    • Dekoratory
  • Wyliczenia
  • Podsumowanie

Rozdział 5. Interfejs, wzorce i modułowość

  • Wymagania techniczne
  • Interfejsy
    • Odrobina historii: zope.interface
    • Stosowanie adnotacji funkcji i abstrakcyjnych klas bazowych
    • Tworzenie interfejsów z wykorzystaniem adnotacji określających typ
  • Odwrócenie sterowania i wstrzykiwanie zależności
    • Odwrócenie sterowania w aplikacjach
    • Stosowanie platform do wstrzykiwania zależności
  • Podsumowanie

Rozdział 6. Współbieżność

  • Wymagania techniczne
  • Czym jest współbieżność?
  • Wielowątkowość
    • Czym jest wielowątkowość?
    • Obsługa wątków w Pythonie
    • Kiedy należy stosować wielowątkowość?
    • Przykładowa aplikacja wielowątkowa
  • Wieloprocesowość
    • Wbudowany moduł multiprocessing
    • Stosowanie puli procesów
    • Stosowanie modułu multiprocessing.dummy jako interfejsu do obsługi wielowątkowości
  • Programowanie asynchroniczne
    • Kooperatywna wielozadaniowość i asynchroniczne operacje wejścia - wyjścia
    • Słowa kluczowe async i await w Pythonie
    • Praktyczny przykład zastosowania programowania asynchronicznego
    • Dostosowywanie nieasynchronicznego kodu do asynchroniczności za pomocą obiektów future
  • Podsumowanie

Rozdział 7. Programowanie sterowane zdarzeniami

  • Wymagania techniczne
  • Czym dokładnie jest programowanie sterowane zdarzeniami?
    • Sterowanie zdarzeniami nie jest tożsame z asynchronicznością
    • Programowanie sterowane zdarzeniami w GUI
    • Komunikacja sterowana zdarzeniami
  • Różne style programowania sterowanego zdarzeniami
    • Styl oparty na wywołaniach zwrotnych
    • Styl oparty na obserwowaniu obiektów
    • Styl oparty na tematach
  • Architektury sterowane zdarzeniami
    • Kolejki zdarzeń i komunikatów
  • Podsumowanie

Rozdział 8. Elementy metaprogramowania

  • Wymagania techniczne
  • Czym jest metaprogramowanie?
  • Stosowanie dekoratorów do modyfikowania działania funkcji przed jej użyciem
    • Następny krok: dekoratory klas
  • Przechwytywanie procesu tworzenia instancji klasy
  • Metaklasy
    • Ogólna składnia
    • Stosowanie metaklas
    • Pułapki związane z metaklasami
    • Stosowanie metody __init_subclass__() jako alternatywy dla metaklas
  • Generowanie kodu
    • Funkcje exec, eval i compile
    • Drzewa składni abstrakcyjnej
    • Haczyki importu
    • Ważne przykłady generowania kodu w Pythonie
  • Podsumowanie

Rozdział 9. Łączenie Pythona z kodem w C i C++

  • Wymagania techniczne
  • C i C++ jako podstawa rozszerzalności w Pythonie
  • Kompilowanie i wczytywanie w Pythonie rozszerzeń napisanych w C
  • Kiedy należy używać rozszerzeń?
    • Zwiększanie wydajności kluczowych fragmentów kodu
    • Integrowanie istniejącego kodu napisanego w różnych językach
    • Integrowanie zewnętrznych bibliotek dynamicznych
    • Tworzenie wydajnych niestandardowych typów danych
  • Pisanie rozszerzeń
    • Rozszerzenia w czystym C
    • Pisanie rozszerzeń za pomocą Cythona
  • Wady korzystania z rozszerzeń
    • Dodatkowa złożoność
    • Trudniejsze debugowanie
  • Komunikacja z bibliotekami dynamicznymi bez używania rozszerzeń
    • Moduł ctypes
    • CFFI
  • Podsumowanie

Rozdział 10. Automatyzacja testów i kontroli jakości

  • Wymagania techniczne
  • Zasady programowania sterowanego testami
  • Pisanie testów z użyciem platformy pytest
    • Parametryzacja testów
    • Konfiguracje testów w platformie pytest
    • Stosowanie "fałszywych" obiektów
    • Atrapy i moduł unittest.mock
  • Automatyzacja kontroli jakości
    • Pokrycie kodu testami
    • Narzędzia do poprawiania stylu i lintery
    • Statyczna analiza typów
  • Testowanie mutacyjne
  • Przydatne narzędzia związane z testami
    • Generowanie realistycznych danych
    • Generowanie dat i czasu
  • Podsumowanie

Rozdział 11. Tworzenie pakietów i udostępnianie kodu w Pythonie

  • Wymagania techniczne
  • Tworzenie pakietów bibliotek i ich udostępnianie
    • Budowa pakietu Pythona
    • Rodzaje dystrybucji pakietów
    • Rejestrowanie i publikowanie pakietów
    • Wersjonowanie pakietów i zarządzanie zależnościami
    • Instalowanie własnych pakietów
    • Pakiety przestrzeni nazw
    • Skrypty i punkty wejścia w pakietach
  • Tworzenie pakietów aplikacji i usług do użytku w internecie
    • Manifest Twelve-Factor App
    • Korzystanie z Dockera
    • Zarządzanie zmiennymi środowiskowymi
    • Rola zmiennych środowiskowych w platformach do tworzenia aplikacji
  • Tworzenie samodzielnych aplikacji wykonywalnych
    • Kiedy samodzielne aplikacje wykonywalne są przydatne?
    • Popularne narzędzia
    • Bezpieczeństwo kodu Pythona w pakietach wykonywalnych
  • Podsumowanie

Rozdział 12. Monitorowanie pracy i wydajności aplikacji

  • Wymagania techniczne
  • Rejestrowanie błędów i logów
    • Podstawy rejestrowania logów w Pythonie
    • Zalecane praktyki z obszaru rejestrowania logów
    • Rozproszone rejestrowanie logów
    • Rejestrowanie błędów w celu ich późniejszej analizy
  • Instrumentacja kodu z wykorzystaniem niestandardowych wskaźników
    • Stosowanie aplikacji Prometheus
  • Śledzenie rozproszone aplikacji
    • Śledzenie rozproszone za pomocą Jaegera
  • Podsumowanie

Rozdział 13. Optymalizacja kodu

  • Wymagania techniczne
  • Częste przyczyny niskiej wydajności
    • Złożoność kodu
    • Nadmierne wykorzystanie zasobów i ich wyciekanie
    • Nadmierna liczba operacji wejścia - wyjścia i operacji blokujących
  • Profilowanie kodu
    • Profilowanie procesora
    • Profilowanie wykorzystania pamięci
  • Zmniejszanie złożoności przez wybór odpowiednich struktur danych
    • Przeszukiwanie listy
    • Stosowanie zbiorów
    • Stosowanie modułu collections
  • Architektoniczne kompromisy
    • Stosowanie heurystyk i algorytmów aproksymacyjnych
    • Stosowanie kolejek zadań i przetwarzania odroczonego
    • Stosowanie probabilistycznych struktur danych
    • Zapisywanie wyników w pamięci podręcznej
  • Podsumowanie

Skorowidz

  • Title: Profesjonalne programowanie w Pythonie. Poznaj najlepsze praktyki kodowania i zaawansowane koncepcje programowania. Wydanie IV
  • Author: Michał Jaworski, Tarek Ziadé
  • Original title: Expert Python Programming: Master Python by learning the best coding practices and advanced programming concepts, 4th Edition
  • Translation: Tomasz Walczak
  • ISBN: 978-83-283-8744-7, 9788328387447
  • Date of issue: 2022-06-28
  • Format: Ebook
  • Item ID: prprp4
  • Publisher: Helion