Rozdział 24 · Co dalej? Roadmap Python- deweloper

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.

BlokPo co i kiedyWymagania wstępne i kryteria
Comprehensions, rozpakowywanie się, krojenieKompaktowo 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, generatorPrzetwarzaj 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 dekoratoryDostosowanie zachowania funkcji i oddzielna logika end-to-end.After funkcje jako obiekty. Zapisujesz sygnaturę i rozumiesz kolejność wywołań.
Exceptions i context managersZagwarantuj 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 enumsOpisz 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, ProtocolUdostę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

Functionswywołanie, parametry,returnFirst-classfunctionsfunkcja jako wartośćClosuresśrodowisko uratowaneDecoratorsControllable Wrapzachowania
Decorators opierają się na funkcjach jako obiektach i domknięciach; badanie ich jako osobnego triku składniowego nie wystarcza.
LoopsKonsekwentnyobejściaIteration modeliterable i iterIteratorprotocolnext i StopIterationGeneratorsleniwe produkcjeznaczenia
Generators stają się zrozumiałe po protokole iteratora, a nie przed nim.

Standardowa Biblioteka jako narzędzie robocze

Biblioteka według celu, nie alfabetycznie
KOLEKCJE
collections
collections.abc
odpowiednia struktura zamiast losowego list
CZAS
datetime
timezone-aware znaczenia
jawny format wymiany
ŚCIEŻKI I DANE
pathlib
json
kodowania UTF-8
schemat i walidacja
TEKST
re
szablon tylko tam, gdzie jest prostszy niż jawne parsowanie
testy granicznych wierszy
ŹRÓDŁA
contextlib
with
deterministyczne zwolnienie
DIAGNOZA
logging
poziomy i kontekst
nie zastępować testów logami
Ucz się modułu, gdy rozwiązuje on prawdziwy problem projektu.

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ść

ModelOdpowiednieNie rozwiązuje automatycznie
asyncioDużo operacji oczekiwania z bibliotekami obsługującymi async.CPU-bound obliczenia i blokowanie wywołań w event loop.
threadsBlokowanie I/O i bibliotek za pomocą normalnych synchronicznych API.Uproszczenie ogólnego stanu zmiennego.
processesIzolacja 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.

Procedura uczenia się
Zacznij od idiomów kolekcji i modelu iteracyjnego. Następnie pogłębiaj wyjątki, menedżery kontekstu, struktury danych i typing.. Pakiety i środowiska ucz się na realnym projekcie. Współbieżność dodawaj po pojawieniu się mierzalnego zadania.
Oficjalna dokumentacja
Python data model
typing: Support for type hints
contextlib: Utilities for with-statement contexts
The Python Standard Library
venv: Creation of virtual environments
Python Packaging User Guide
asyncio: Asynchronous I/O
Concurrent Execution