0Pricing
Python Academy · Lekcja

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 up

Dopasowywanie 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.

  • match sprawdza 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ść.
  • match jest 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

  1. Podstawy match i case
  2. Dopasowywanie sekwencji i mapowań
  3. Wzorce klas
  4. Strażnicy i symbole wieloznaczne
← Powrót do Python Academy