Podstawy match i case
Rozgałęziaj kod na podstawie wzorców wartości
Podstawy match i case to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Dopasowywanie wzorców strukturalnych
W Pythonie 3.10 wprowadzono dopasowywanie wzorców strukturalnych za pomocą instrukcji match. Porównuje ona wartość z szeregiem wzorców i wykonuje pierwszy pasujący wzorzec, oferując znacznie więcej możliwości niż łańcuchy if/elif.
Podstawowa składnia
Po słowie match należy podać sprawdzaną wartość, a następnie jeden lub więcej bloków case. Wykonywany jest pierwszy pasujący przypadek.
command = 'start'
match command:
case 'start':
print('Starting up')
case 'stop':
print('Shutting down')
# prints: Starting upDopasowywanie literałów
Najprostsze wzorce to wartości literalne: liczby, napisy, True, False i None. Pasują, gdy sprawdzana wartość jest równa danemu literałowi.
code = 404
match code:
case 200:
print('OK')
case 404:
print('Not Found')
case 500:
print('Server Error')Symbol wieloznaczny _
Podkreślenie _ jest wzorcem wieloznacznym, który pasuje do wszystkiego. Należy umieścić je na końcu jako domyślny przypadek obejmujący wszystko, podobnie jak else.
code = 418
match code:
case 200:
print('OK')
case _:
print('Unknown status')Łączenie za pomocą OR
Operatora | można użyć wewnątrz przypadku, aby dopasować dowolny z kilku wzorców.
code = 301
match code:
case 200 | 201 | 204:
print('Success')
case 301 | 302:
print('Redirect')
case _:
print('Other')Przechwytywanie wartości
Samodzielna nazwa we wzorcu przechwytuje sprawdzaną wartość do tej zmiennej. Należy użyć jej, gdy dopasowano przypadek obejmujący wszystko, ale nadal potrzebna jest sama wartość.
value = 42
match value:
case 0:
print('zero')
case other:
print('got', other)Kolejność ma znaczenie
Przypadki są sprawdzane od góry do dołu, a pierwsze dopasowanie wygrywa. Szeroki wzorzec przechwytujący umieszczony zbyt wcześnie przesłoni późniejsze, bardziej szczegółowe przypadki.
x = 5
match x:
case n: # matches everything first!
print('caught by capture')
case 5:
print('this never runs')Match niczego nie zwraca
match jest instrukcją, a nie wyrażeniem, dlatego nie zwraca wartości. Jeśli potrzebny jest wynik, należy ustawić zmienną wewnątrz przypadków.
day = 6
label = ''
match day:
case 0 | 6:
label = 'weekend'
case _:
label = 'weekday'
print(label)Dopasowywanie None
Można bezpośrednio dopasować None. Jest to czytelniejsze niż jawne sprawdzanie is None w łańcuchu warunków.
def describe(value):
match value:
case None:
return 'nothing'
case _:
return 'something: ' + str(value)
print(describe(None))
print(describe(7))Praktyczny dyspozytor
Dopasowywanie wzorców szczególnie dobrze sprawdza się jako dyspozytor poleceń, zamieniając długi łańcuch instrukcji if w przejrzystą tabelę przypadków.
def handle(cmd):
match cmd:
case 'help':
return 'Showing help'
case 'quit' | 'exit':
return 'Goodbye'
case _:
return 'Unknown command'
print(handle('exit'))
print(handle('foo'))Dopasowywanie True, False i None
Stałe True, False i None są dopasowywane na podstawie tożsamości, a nie równości. Dzięki temu są niezawodnymi singletonami, na podstawie których można rozgałęziać działanie programu.
def report(flag):
match flag:
case True:
return 'enabled'
case False:
return 'disabled'
case None:
return 'unset'
print(report(True))
print(report(None))Szybkie sprawdzenie
Co robi wzorzec wieloznaczny _ w instrukcji match?
Podsumowanie
Nauczyli się Państwo rozgałęziać działanie programu na podstawie wzorców wartości.
matchsprawdza przypadki od góry do dołu — wygrywa pierwsze dopasowanie.- Można dopasowywać literały, używać
_jako wzorca obejmującego wszystko i łączyć wzorce za pomocą|. - Samodzielna nazwa przechwytuje wartość.
matchjest instrukcją, a nie wyrażeniem.
Często zadawane pytania
Czy lekcja „Podstawy match i case” jest bezpłatna?
Tak — pełny tekst „Podstawy match i case” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawy match i case”?
Rozgałęziaj kod na podstawie wzorców wartości Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Podstawy match i case”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy match i case
- Dopasowywanie sekwencji i mapowań
- Wzorce klas
- Strażnicy i symbole wieloznaczne