Guido van Rossum
Pêkanîna nû pir dişibihe operatora "maça" ya ku di Scala, Rust, û F# de hatî peyda kirin, ku encama vegotinek diyarkirî bi navnîşek nimûneyên ku di blokan de li ser bingeha operatora "doz" hatî navnîş kirin berhev dike. Berevajî operatora "guhêrbar" ku di C, Java, û JavaScript de peyda dibe, bêjeyên li ser bingeha "match" pir bêtir pêşkêşî dikin.
def http_error(rewş):
statûya maçê:
rewşa 400:
vegere "Daxwaza xerab"
doz 401|403|404:
vegere "Ne destûr"
rewşa 418:
vegere "Ez çaydankê me"
doz_:
vegere "Tiştek din"
Mînakî, hûn dikarin tiştan, tîpan, navnîşan û rêzikên kêfî ji hev vekin da ku guhêrbaran li ser bingeha nirxên heyî girêdin. Destûr e ku meriv şablonên hêlînkirî destnîşan bike, di şablonê de şertên "heke" yên din bikar bîne, maskeyan bikar bîne ("[x, y, *rest]"), nexşeyên kilît/nirx (mînak, {"bandfireh": b, "derengî" ”: l} ji bo derxistina nirx û ferhengê "firehiya band" û "derengiyê", şablonan derxe (":=" operator), di şablonê de domdarên binavkirî bikar bînin. Di dersan de, bi karanîna rêbaza "__match__()" gengaz e ku meriv tevgerê lihevhatî xweş bike.
ji dataclass dataclass import
@dataclass
xala polê:
x:int
y:int
def whereis (xal):
xala hev:
xala dozê (0, 0):
çapkirin ("Esl")
doza Point(0, y):
çapkirin(f"Y={y}")
xala doza (x, 0):
çapkirin (f"X={x}")
case Point():
çapkirin ("Ciyekî din")
doz_:
çapkirin ("Ne xalek")
xala hev:
rewş Xal(x, y) heke x == y:
çapkirin (f"Y=X li {x}")
xala (x, y):
çapkirin (f"Ne li ser diagonalê")
SOR, KESK, ŞÎN = 0, 1, 2
rengê lihevhatinê:
doz .RED:
çap bike ("Ez sor dibînim!")
doz .KEK:
çapkirin ("Giya kesk e")
doz .BLU
E:
çap bike ("Ez şînê hîs dikim :(")
Ji bo lêkolînê setek hatiye amadekirin
Source: opennet.ru