Guido van Rossum ya ba da shawarar ƙara ma'aikatan da suka dace da tsarin zuwa Python

Guido van Rossum gabatar daftarin don nazarin al'umma bayani dalla-dalla don aiwatar da ma'aikatan da suka dace da tsarin (match da case) a cikin Python. Ya kamata a lura cewa an riga an buga shawarwari don ƙara masu aiki masu daidaitawa a cikin 2001 da 2006 (shafi-0275, shafi-3103), amma an ƙi su don inganta ingantaccen ginin "idan ... elif ... kuma" don haɗa sarƙoƙi masu dacewa.

Sabuwar aiwatarwa tana kama da ma'aikacin "match" da aka bayar a cikin Scala, Rust, da F#, wanda ke kwatanta sakamakon ƙayyadaddun furci tare da jerin ƙirar da aka jera a cikin tubalan dangane da ma'aikacin "case". Ba kamar ma'aikacin "switch" da ke cikin C, Java, da JavaScript ba, maganganun tushen "match" suna ba da ƙarin ƙari. m ayyuka. An lura cewa masu aiki da aka tsara za su inganta karanta lambar, sauƙaƙe kwatancen abubuwan Python na sabani da lalata, sannan kuma ƙara amincin lambar godiya ga yuwuwar tsawaitawa. duban nau'in a tsaye.

def http_error(halaye):
Matsayin wasa:
hali 400:
mayar da "Bad request"
shafi 401|403|404:
dawo "Ba a yarda ba"
hali 418:
dawo "Ni katon shayi ne"
kaso_:
dawo "Wani abu kuma"

Misali, zaku iya cire fakitin abubuwa, tuples, jeri, da jeri na sabani don ɗaure masu canji dangane da ƙimar data kasance. An ba da izini don ayyana samfuran gida, yi amfani da ƙarin yanayi "idan" a cikin samfurin, yi amfani da abin rufe fuska ("[x, y, * hutawa]"), taswirar maɓalli/daraja (misali, {"bandwidth": b, "latency" ": l} don cire "bandwidth" da "latency" dabi'u da ƙamus), cire ƙananan samfura (": = " afareta ), yi amfani da madaidaitan suna a cikin samfuri. A cikin azuzuwan, yana yiwuwa a keɓance yanayin daidaitawa ta amfani da hanyar "__match__()".

daga azuzuwan bayanai shigo da dataclass

@dataclass
Matsayin aji:
x: in
y: in

def whereis(point):
wurin wasa:
Matsayin shari'a (0, 0):
buga ("Asalin")
Matsalolin shari'a (0, y):
buga (f"Y={y}")
Matsakaicin yanayi (x, 0):
buga (f"X={x}")
Case Point():
buga ("Wani wuri kuma")
kaso_:
buga ("Ba batu ba")

wurin wasa:
Case Point (x, y) idan x = y:
buga (f"Y=X a {x}")
case Point(x, y):
buga (f"Ba a kan diagonal")

JAN, GREEN, BLUE = 0, 1, 2
kalar wasa:
harka .JA:
buga ("Na ga ja!")
harka .GREEN:
buga ("Ciyawa kore ne")
kaso .BLU
E:
buga ("Ina jin blues :(")

An shirya saitin don dubawa faci tare da gwaji aiwatarwa ƙayyadaddun ƙayyadaddun bayanai, amma sigar ƙarshe har yanzu tana nan tattauna. Misali miƙa Maimakon kalmar "harka _:" don ƙimar tsoho, yi amfani da kalmar "lese:" ko "default:", tun da "_" a wasu mahallin ana amfani da shi azaman maɓalli na wucin gadi. Hakanan abin tambaya shine ƙungiyar cikin gida, wacce ta dogara akan fassarar sabbin maganganu zuwa bytecode kwatankwacin wanda aka yi amfani da shi don “idan ... elif ... sauran” yana ginawa, wanda ba zai samar da aikin da ake so ba yayin sarrafa manyan jeri na kwatance.

source: budenet.ru

Add a comment