Guido van Rossum
Die nuwe implementering is baie soos die "pas"-operateur wat in Scala, Rust en F# verskaf word, wat die resultaat van 'n gespesifiseerde uitdrukking vergelyk met 'n lys patrone wat in blokke gelys word, gebaseer op die "geval"-operateur. Anders as die "skakelaar"-operateur beskikbaar in C, Java en JavaScript, bied "pas"-gebaseerde uitdrukkings baie meer
def http_error(status):
wedstrydstatus:
geval 400:
gee terug "Slegte versoek"
saak 401|403|404:
keer terug "Nie toegelaat nie"
geval 418:
keer terug "Ek is 'n teepot"
geval_:
gee terug "Iets anders"
Byvoorbeeld, jy kan voorwerpe, tuples, lyste en arbitrêre rye uitpak om veranderlikes op grond van bestaande waardes te bind. Dit word toegelaat om geneste sjablone te definieer, addisionele “as”-toestande in die sjabloon te gebruik, maskers te gebruik (“[x, y, *rus]”), sleutel/waarde-afbeeldings (byvoorbeeld, {“bandwydte”: b, “latency” ”: l} om “bandwydte” en “latency” waardes en woordeboek te onttrek), onttrek subtemplates (":=" operateur), gebruik benoemde konstantes in sjabloon. In klasse is dit moontlik om bypassende gedrag aan te pas deur die "__match__()" metode te gebruik.
van dataklasse invoer dataklas
@dataklas
klas punt:
x: int
y: int
def whereis (punt):
wedstrydpunt:
geval Punt (0, 0):
print("Oorsprong")
geval Punt (0, y):
druk(f"Y={y}")
geval Punt (x, 0):
druk(f"X={x}")
geval Punt():
print("Iewers anders")
geval_:
print ("Nie 'n punt nie")
wedstrydpunt:
geval Punt(x, y) as x == y:
druk(f"Y=X by {x}")
geval Punt (x, y):
print(f"Nie op die diagonaal nie")
ROOI, GROEN, BLOU = 0, 1, 2
pas kleur:
kassie .RED:
druk ("Ek sien rooi!")
saak .GROEN:
print("Gras is groen")
geval .BLU
E:
print(“Ek voel die blues :(“)
'n Stel is voorberei vir hersiening
Bron: opennet.ru