Professional Python Core
Idiomy językowe, model iteracji, typy, zasoby, pakiety i współbieżność jako wspólna podstawa Python- programisty.
Warstwa między składnią a specjalizacją
Professional Python Core jest potrzebny we wszystkich kierunkach. Nie jest przekazywany w jednym kierunku i nie są badane przez poszczególne sztuczki. Każda jednostka ma założenie, działające zadanie i obserwowalne kryterium zrozumienia.
| Blok | Po co i kiedy | Wymagania wstępne i kryteria |
|---|---|---|
| Comprehensions, rozpakowywanie się, krojenie | Kompaktowo transformuj kolekcje i jawnie rozkładaj wartości. | Po listach i pętlach. Możesz wybrać czytelną formę i nie ukryć złożonej logiki w jednej linii. |
| Iterable, iterator, generator | Przetwarzaj strumień wartości bez konieczności przechowywania całego wyniku. | Po funkcjach i pętlach. Wyjaśniasz różnicę między obiektem, iteratorem a leniwym generatorem. |
| Zamykania i dekoratory | Dostosowanie zachowania funkcji i oddzielna logika end-to-end. | After funkcje jako obiekty. Zapisujesz sygnaturę i rozumiesz kolejność wywołań. |
| Exceptions i context managers | Zagwarantuj uwolnienie zasobu i włącz odmowę do umowy. | Po try/except i plikach. Rozróżniasz oczekiwane wyjątek, cleanup i tłumienie błędów. |
| dataclasses i enums | Opisz dane i skończony zestaw stanów bez zbędnego kodu szablonowego. | Po klasach. Inwarianty nie są rozproszone w zestawie literałów tekstowych. |
| Typing, aliases, generics, Protocol | Udostępnić interfejsy czytelnikowi i analizatorowi statycznemu. | Po funkcjach i klasach. Pamiętaj, że same adnotacje nie są sprawdzane Python w czasie działania. |
Uzależnienia w Core
Standardowa Biblioteka jako narzędzie robocze
Moduły, środowiska i sposób realizacji
Kolejny poziom modułowości zaczyna się od wyraźnych importów i pakietu, który
interfejs publiczny. Środowisko wirtualne izoluje zależności projektów. Opis w
pyproject.toml zapisuje metadane i narzędzia budowania.
Wersje zależności muszą być odtwarzalne w takim stopniu, w jakim wymaga tego projekt;
ślepe przypięcie każdej wersji tranzytywnej i całkowity brak ograniczeń stwarzają
różne ryzyka.
Asynchronia i konkurencyjność
| Model | Odpowiednie | Nie rozwiązuje automatycznie |
|---|---|---|
| asyncio | Dużo operacji oczekiwania z bibliotekami obsługującymi async. | CPU-bound obliczenia i blokowanie wywołań w event loop. |
| threads | Blokowanie I/O i bibliotek za pomocą normalnych synchronicznych API. | Uproszczenie ogólnego stanu zmiennego. |
| processes | Izolacja i zadania równoległe CPU-bound. | Darmowe udostępnianie big data i natychmiastowy start. |
Najpierw zmierz wzór obciążenia. Następnie wybierz model i wyraźnie zdefiniuj
cancel, timeouts, zakończenie, próba ponownego wykonania operacji oraz wspólne granice stanów. Samo słowo
async nie przyspiesza programu.