Gvido van Rosums
Jaunā ieviešana ir līdzīga Scala, Rust un F# nodrošinātajam operatoram "match", kas salīdzina noteiktas izteiksmes rezultātu ar modeļu sarakstu, kas uzskaitīts blokos, pamatojoties uz operatoru "case". Atšķirībā no operatora "switch", kas pieejams C, Java un JavaScript, uz "match" balstītas izteiksmes piedāvā daudz vairāk
def http_error(status):
atbilstības statuss:
400 gadījums:
atgriezt "slikts pieprasījums"
gadījums 401|403|404:
atgriezt "Nav atļauts"
418 gadījums:
atgriezt "Es esmu tējkanna"
case_:
atgriezt "kaut ko citu"
Piemēram, varat izpakot objektus, korešus, sarakstus un patvaļīgas secības, lai saistītu mainīgos, pamatojoties uz esošajām vērtībām. Ir atļauts definēt ligzdotas veidnes, veidnē izmantot papildu “if” nosacījumus, izmantot maskas (“[x, y, *rest]”), atslēgu/vērtību kartējumus (piemēram, {“joslas platums”: b, “latency” ”: l}, lai izvilktu "joslas platuma" un "latences" vērtības un vārdnīcu), izvilktu apakšveidnes (operators ":="), veidnē izmantojiet nosauktās konstantes. Klasēs ir iespējams pielāgot atbilstības uzvedību, izmantojot metodi “__match__()”.
no dataclasses importēt dataclass
@dataklase
klases punkts:
x:int
y:int
def whereis(punkts):
spēles punkts:
gadījuma punkts (0, 0):
drukāt ("Izcelsme")
gadījuma punkts (0, y):
drukāt (f"Y={y}")
gadījuma punkts (x, 0):
drukāt (f"X={x}")
gadījuma punkts ():
drukāt ("kaut kur citur")
case_:
drukāt ("Nav nozīmes")
spēles punkts:
gadījuma punkts(x, y), ja x == y:
drukāt (f"Y=X plkst. {x}")
gadījuma punkts (x, y):
drukāt (f"Nav pa diagonāli")
SARKANS, ZAĻS, ZILS = 0, 1, 2
atbilst krāsa:
korpuss .RED:
drukāt ("Es redzu sarkanu!")
korpuss .GREEN:
drukāt ("Zāle ir zaļa")
korpuss .BLU
E:
print("Es jūtu blūzu :(")
Pārskatīšanai ir sagatavots komplekts
Avots: opennet.ru