0Pricing
Python Academy · Lekcja

Strażnicy i symbole wieloznaczne

Dodawaj warunki i przypadki domyślne

Strażnicy i symbole wieloznaczne to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 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.

Doprecyzowywanie dopasowań

Czasami wzorzec strukturalny nie wystarcza — potrzebny jest także warunek. Warunki ochronne dodają test if do przypadku, a wzorce wieloznaczne zapewniają elastyczne przypadki obejmujące wszystko.

Dodawanie warunku ochronnego

Po wzorcu należy zapisać if <condition>. Przypadek pasuje tylko wtedy, gdy wzorzec się zgadza i warunek ochronny jest prawdziwy.

n = 7

match n:
    case x if x < 0:
        print('negative')
    case x if x == 0:
        print('zero')
    case x if x > 0:
        print('positive')

Warunki ochronne używają przechwyconych nazw

Warunek ochronny może odwoływać się do zmiennych powiązanych przez wzorzec. W tym przykładzie przechwycona para jest sprawdzana pod kątem równości.

point = [3, 3]

match point:
    case [x, y] if x == y:
        print('on the diagonal')
    case [x, y]:
        print('off the diagonal')

Gdy warunek ochronny nie jest spełniony

Jeśli struktura pasuje, ale warunek ochronny jest fałszywy, dopasowywanie jest kontynuowane dla następnego przypadku, zamiast się zatrzymać.

value = 5

match value:
    case n if n > 100:
        print('big')
    case n:
        print('fell through to here:', n)

Warunki ochronne ze wzorcami klas

Warunki ochronne można łączyć z każdym rodzajem wzorca, także ze wzorcami klas, aby precyzyjnie określać warunki dotyczące atrybutów obiektów.

from dataclasses import dataclass

@dataclass
class Order:
    total: float

def discount(order):
    match order:
        case Order(total=t) if t > 100:
            return 'free shipping'
        case Order():
            return 'standard shipping'

print(discount(Order(150)))
print(discount(Order(50)))

Podsumowanie symbolu wieloznacznego

Pojedyncze podkreślenie _ pasuje do wszystkiego i niczego nie przypisuje. Jako ostatni przypadek obsługuje wszystko, czego nie przechwycono wcześniej.

x = 'unexpected'

match x:
    case 'a':
        print('letter a')
    case _:
        print('catch-all')

Przechwytywanie a symbol wieloznaczny

Nazwane przechwycenie również pasuje do wszystkiego, ale zachowuje wartość, podczas gdy _ ją odrzuca. Należy użyć nazwy, gdy wartość będzie potrzebna w treści przypadku.

value = 42

match value:
    case 0:
        print('zero')
    case other:        # capture: keeps the value
        print('value was', other)

Wzorce wieloznaczne wewnątrz wzorców

Podkreślenie może występować wewnątrz większych wzorców, aby ignorować części, które nie mają znaczenia.

record = ('user', 42, 'ignore_me')

match record:
    case ('user', user_id, _):
        print('user id:', user_id)

Łączenie OR, warunków ochronnych i symboli wieloznacznych

Te funkcje można łączyć. Wzorzec OR, następnie warunek ochronny i końcowy wzorzec wieloznaczny tworzą wyrazisty klasyfikator.

def classify(n):
    match n:
        case 0 | 1:
            return 'binary digit'
        case x if x % 2 == 0:
            return 'even'
        case _:
            return 'odd'

print(classify(0))
print(classify(4))
print(classify(7))

Kompletność dopasowania

W przeciwieństwie do niektórych języków Python nie wymaga, aby dopasowanie obejmowało wszystkie możliwości. Jeśli żaden przypadek nie pasuje, instrukcja po prostu nic nie robi. Należy dodać końcowy case _, gdy ma być zagwarantowane wykonanie jakiejś gałęzi.

color = 'purple'
result = 'no match'

match color:
    case 'red':
        result = 'stop'
    case 'green':
        result = 'go'

print(result)

Warunki ochronne dla zdestrukturyzowanych danych

Warunki ochronne naturalnie łączą się ze wzorcami sekwencji i mapowania, pozwalając sprawdzać wartości właśnie wyodrębnione z danych.

data = [10, 20]

match data:
    case [a, b] if a + b > 25:
        print('sum is large')
    case [a, b]:
        print('sum is small')

Szybkie sprawdzenie

Co się dzieje, gdy wzorzec pasuje strukturalnie, ale jego warunek ochronny jest fałszywy?

Podsumowanie

Nauczyli się Państwo dodawać warunki i przypadki obejmujące wszystko.

  • Warunki ochronne dodają test if, który może korzystać z przechwyconych nazw.
  • Niespełniony warunek ochronny powoduje przejście do następnego przypadku.
  • _ dopasowuje i odrzuca wartość, a nazwa ją przechwytuje.
  • Końcowy case _ zapewnia wykonanie jednej z gałęzi.

Często zadawane pytania

Czy lekcja „Strażnicy i symbole wieloznaczne” jest bezpłatna?

Tak — pełny tekst „Strażnicy i symbole wieloznaczne” 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 „Strażnicy i symbole wieloznaczne”?

Dodawaj warunki i przypadki domyślne Ć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 4 z 4.

Ile czasu zajmuje lekcja „Strażnicy i symbole wieloznaczne”?

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