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
- Podstawy match i case
- Dopasowywanie sekwencji i mapowań
- Wzorce klas
- Strażnicy i symbole wieloznaczne