Guido van Rossum
De nieuwe implementatie lijkt veel op de "match"-operator in Scala, Rust en F#, die het resultaat van een gespecificeerde expressie vergelijkt met een lijst met patronen die in blokken zijn opgesomd op basis van de "case"-operator. In tegenstelling tot de "switch"-operator die beschikbaar is in C, Java en JavaScript, bieden op "match" gebaseerde expressies veel meer
def http_error(status):
wedstrijdstatus:
geval 400:
retourneer "Slecht verzoek"
geval 401|403|404:
retourneer "Niet toegestaan"
geval 418:
return "Ik ben een theepot"
geval _:
retourneer "Iets anders"
U kunt bijvoorbeeld objecten, tupels, lijsten en willekeurige reeksen uitpakken om variabelen te binden op basis van bestaande waarden. Het is toegestaan om geneste sjablonen te definiëren, aanvullende “if”-voorwaarden in de sjabloon te gebruiken, maskers (“[x, y, *rest]”), sleutel/waarde-toewijzingen te gebruiken (bijvoorbeeld {“bandbreedte”: b, “latency ”: l} om "bandbreedte"- en "latency"-waarden en woordenboek te extraheren), subsjablonen te extraheren (":=" operator), gebruik benoemde constanten in de sjabloon. In klassen is het mogelijk om het matchgedrag aan te passen met behulp van de “__match__()”-methode.
uit dataclasses importeer dataclass
@dataclass
klasse punt:
x:int
y:int
def waar(punt):
matchpunt:
geval Punt(0, 0):
print("Oorsprong")
geval Punt(0, y):
print(f"Y={y}")
geval Punt(x, 0):
afdrukken(f"X={x}")
hoofdletterpunt():
print("Ergens anders")
geval _:
print("Geen punt")
matchpunt:
case Punt(x, y) als x == y:
print(f"Y=X op {x}")
geval Punt(x, y):
print(f"Niet op de diagonaal")
ROOD, GROEN, BLAUW = 0, 1, 2
overeenkomen met kleur:
geval. ROOD:
print("Ik zie rood!")
geval .GROEN:
print("Gras is groen")
geval .BLU
E:
print(“Ik voel de blues :(“)
Er is een set klaargemaakt ter beoordeling
Bron: opennet.ru