Guido van Rossum pêşniyar kir ku operatorên lihevhatina nimûneyê li Python zêde bikin

Guido van Rossum danasîn pêşnûmeya ji bo nirxandina civakê taybetmendiyên ji bo bicihanîna operatorên lihevhatina nimûneyê (hev û doz) li Python. Divê were zanîn ku pêşniyarên ji bo zêdekirina operatorên lihevhatina nimûne jixwe di 2001 û 2006 de hatine weşandin (pep-0275, pep-3103), lê ji bo xweşbînkirina avakirina "eger ... elif ... din" ji bo berhevkirina zincîreyên lihevhatî hatin red kirin.

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. fonksiyona berfireh. Tê destnîşan kirin ku operatorên pêşniyarkirî dê xwendina kodê çêtir bikin, berhevdana tiştên keyfî yên Python û debugkirinê hêsan bikin, û her weha pêbaweriya kodê ji ber îhtîmala dirêjkirinê zêde bikin. kontrolkirina tîpa statîk.

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 patches bi ezmûnî pêkanîna taybetmendiya pêşniyarkirî, lê guhertoya dawîn hîna ye nîqaş kirin. Mînakî pêşkêş kirin Li şûna îfadeya "case _:" ji bo nirxa xwerû, peyva sereke "din:" an "default:" bikar bînin, ji ber ku "_" di çarçoveyek din de wekî guhêrbarek demkî tê bikar anîn. Di heman demê de rêxistina navxweyî jî gumanbar e, ku li ser bingeha wergerandina bêjeyên nû li baytkodê ye, mîna ya ku ji bo avahîyên "eger ... elif ... din" tê bikar anîn, ku dê performansa xwestî peyda neke dema ku berhevokên pir mezin berhev dike.

Source: opennet.ru

Add a comment