Guido van Rossum
L-implimentazzjoni l-ġdida hija ħafna bħall-operatur "taqbil" ipprovdut fi Scala, Rust, u F#, li jqabbel ir-riżultat ta 'espressjoni speċifikata ma' lista ta 'mudelli elenkati fi blokki bbażati fuq l-operatur "każ". B'differenza mill-operatur "swiċċ" disponibbli f'C, Java, u JavaScript, espressjonijiet ibbażati fuq "taqbil" joffru ħafna aktar
def http_error(status):
status tal-logħba:
każ 400:
ritorn "Talba ħażina"
każ 401|403|404:
ritorn "Mhux permess"
każ 418:
ritorn "Jien teapot"
każ_:
ritorn "Xaġa oħra"
Pereżempju, tista' tneħħi l-ippakkjar ta' oġġetti, tuples, listi, u sekwenzi arbitrarji biex torbot varjabbli bbażati fuq valuri eżistenti. Huwa permess li jiġu definiti mudelli nested, tuża kundizzjonijiet addizzjonali "jekk" fil-mudell, tuża maskri ("[x, y, *mistrieħ]"), mappings taċ-ċavetta/valur (per eżempju, {"bandwidth": b, "latency" ”: l} biex jiġu estratti l-valuri u d-dizzjunarju "bandwidth" u "latency", estratti sottotemplates (":=" operatur), uża kostanti msemmija fil-mudell. Fil-klassijiet, huwa possibbli li tippersonalizza l-imġiba ta 'tqabbil bl-użu tal-metodu "__match__()".
minn dataclasses importazzjoni dataclass
@dataclass
klassi Punt:
x:int
y:int
def whereis(punt):
punt ta' partita:
każ Punt(0, 0):
print("Oriġini")
każ Punt(0, y):
print(f"Y={y}")
każ Punt(x, 0):
print(f"X={x}")
każ Punt():
print("X'imkien ieħor")
każ_:
print("Mhux punt")
punt ta' partita:
każ Punt(x, y) jekk x == y:
print(f"Y=X f'{x}")
każ Punt(x, y):
print(f"Mhux fuq id-dijagonali")
AĦMAR, AĦDAR, BLUE = 0, 1, 2
taqbel bil-kulur:
każ .RED:
print("Nara aħmar!")
każ .AĦDAR:
print ("Il-ħaxix huwa aħdar")
każ .BLU
E:
print(“Qed inħoss il-blu :(“)
Ġie ppreparat sett għar-reviżjoni
Sors: opennet.ru