Guido van Rossuma
Nowa implementacja przypomina operator „dopasuj” dostępny w językach Scala, Rust i F#, który porównuje wynik określonego wyrażenia z listą wzorców wymienionych w blokach na podstawie operatora „case”. W przeciwieństwie do operatora „switch” dostępnego w językach C, Java i JavaScript, wyrażenia oparte na „dopasowaniu” oferują znacznie więcej
def http_error(status):
stan meczu:
przypadek 400:
zwróć „Złe żądanie”
sprawa 401|403|404:
zwróć „Niedozwolone”
przypadek 418:
powrót „Jestem czajnikiem”
sprawa_:
zwróć „Coś innego”
Można na przykład rozpakowywać obiekty, krotki, listy i dowolne sekwencje, aby powiązać zmienne w oparciu o istniejące wartości. Dopuszczalne jest definiowanie szablonów zagnieżdżonych, stosowanie w szablonie dodatkowych warunków „if”, stosowanie masek („[x, y, *rest]”), mapowań klucz/wartość (np. {„bandwidth”: b, „latency ”: l}, aby wyodrębnić wartości „przepustowości” i „opóźnienia” oraz słownik), wyodrębnić podszablony (operator:="), użyć nazwanych stałych w szablonie. Na zajęciach można dostosować zachowanie dopasowywania za pomocą metody „__match__()”.
z klas danych importuj klasę danych
@klasa danych
Punkt klasy:
x:int
y:wew
określ gdzie się znajduje(punkt):
punkt meczowy:
przypadek Punkt (0, 0):
print("Pochodzenie")
punkt przypadku (0, y):
print(f"Y={y}")
punkt przypadku (x, 0):
drukuj(f"X={x}")
Punkt przypadku():
print("Gdzie indziej")
sprawa_:
print("Nie ma sensu")
punkt meczowy:
przypadek Punkt(x, y) jeśli x == y:
print(f"Y=X w {x}")
punkt przypadku (x, y):
print(f"Nie po przekątnej")
CZERWONY, ZIELONY, NIEBIESKI = 0, 1, 2
Dopasuj kolor:
sprawa .CZERWONY:
print("Widzę kolor czerwony!")
obudowa .ZIELONA:
print("Trawa jest zielona")
obudowa .BLU
E:
print(“Czuję smutek :(“)
Zestaw został przygotowany do recenzji
Źródło: opennet.ru