Գվիդո վան Ռոսում
Նոր իրականացումը շատ նման է Scala-ում, Rust-ում և F#-ում տրված «match» օպերատորին, որը համեմատում է նշված արտահայտության արդյունքը «case» օպերատորի վրա հիմնված բլոկներում թվարկված օրինաչափությունների ցանկի հետ: Ի տարբերություն «switch» օպերատորի, որը հասանելի է C, Java և JavaScript-ում, «match»-ի վրա հիմնված արտահայտությունները շատ ավելին են առաջարկում։
def http_error(status):
համընկնումի կարգավիճակը:
գործ 400:
վերադարձնել «Վատ խնդրանք»
գործ 401|403|404:
վերադարձ «Չի թույլատրվում»
գործ 418:
վերադարձ «Ես թեյնիկ եմ»
case_:
վերադարձնել «Ուրիշ բան»
Օրինակ, դուք կարող եք բացել առարկաները, բազմոցները, ցուցակները և կամայական հաջորդականությունները՝ գոյություն ունեցող արժեքների հիման վրա փոփոխականները կապելու համար: Թույլատրվում է սահմանել տեղադրված կաղապարներ, օգտագործել լրացուցիչ «եթե» պայմաններ կաղապարում, օգտագործել դիմակներ («[x, y, *rest]»), բանալիների/արժեքների քարտեզագրում (օրինակ՝ {«թողունակություն»՝ b, «latency»: l} «թողունակության» և «լատենտության» արժեքները և բառարանը հանելու համար, ենթակաղապարներ հանելու համար (":=" օպերատոր), օգտագործեք անվանված հաստատուններ կաղապարում: Դասերում հնարավոր է հարմարեցնել համապատասխան վարքագիծը՝ օգտագործելով «__match__()» մեթոդը:
տվյալների դասակարգերից ներմուծման տվյալների դասակարգ
@dataclass
դասի կետ:
x:int
y:int
def whereis(point):
համընկնումի կետ.
case Point(0, 0):
տպել («Ծագում»)
դեպքի կետ (0, y):
տպել (f"Y={y}")
case Point(x, 0):
տպել (f"X={x}")
case Point():
տպել («Ուրիշ տեղ»)
case_:
տպել («Կետ չէ»)
համընկնումի կետ.
դեպք կետ (x, y) եթե x == y:
տպել (f"Y=X ժամը {x}")
դեպք կետ (x, y):
տպել (f"Ոչ անկյունագծով")
ԿԱՐՄԻՐ, ԿԱՆԱՉ, Կապույտ = 0, 1, 2
համապատասխան գույնը:
դեպք .ԿԱՐՄԻՐ:
տպել («Ես կարմիր եմ տեսնում»)
դեպք .ԿԱՆԱՉ:
տպել («Խոտը կանաչ է»)
գործ .BLU
E:
տպել («Ես զգում եմ բլյուզը :(»)
Ստուգման համար պատրաստվել է հավաքածու
Source: opennet.ru