Guido van Rossum dabaa fifi awọn oniṣẹ ibaamu ilana kun Python

Guido van Rossum ṣafihan osere fun awujo awotẹlẹ ni pato fun imuse awọn oniṣẹ ibamu ilana (baramu ati ọran) ni Python. O yẹ ki o ṣe akiyesi pe awọn igbero lati ṣafikun awọn oniṣẹ ti o baamu awoṣe ti tẹlẹ ti tẹjade ni 2001 ati 2006 (pepe-0275, pepe-3103), ṣugbọn wọn kọ wọn ni ojurere ti iṣapeye “ti o ba jẹ pe ... elif ... omiiran” ti a ṣe fun iṣakojọpọ awọn ẹwọn ti o baamu.

Imuse tuntun jẹ bii oniṣẹ “baramu” ti a pese ni Scala, Rust, ati F #, eyiti o ṣe afiwe abajade ti ikosile kan pẹlu atokọ ti awọn ilana ti a ṣe akojọ si awọn bulọọki ti o da lori oniṣẹ “ọran”. Ko dabi oniṣẹ “yipada” ti o wa ni C, Java, ati JavaScript, awọn ikosile “baramu” ti o da lori nfunni pupọ diẹ sii. jakejado iṣẹ-. O ṣe akiyesi pe awọn oniṣẹ ti a dabaa yoo ṣe ilọsiwaju kika ti koodu naa, rọrun lafiwe ti awọn nkan Python lainidii ati n ṣatunṣe aṣiṣe, ati tun mu igbẹkẹle koodu naa pọ si ọpẹ si iṣeeṣe ti o gbooro sii. aimi iru yiyewo.

def http_error(ipo):
ipo baramu:
ọran 400:
pada "Ibeere buburu"
irú 401|403|404:
pada "Ko gba laaye"
ọran 418:
pada "Mo jẹ ikoko tea"
irú_:
pada "Ohun miiran"

Fun apẹẹrẹ, o le tu awọn nkan silẹ, tuples, awọn atokọ, ati awọn ilana lainidii lati di awọn oniyipada ti o da lori awọn iye to wa tẹlẹ. O gba ọ laaye lati ṣalaye awọn awoṣe itẹ-ẹiyẹ, lo awọn ipo “ti o ba” ninu awoṣe, lo awọn iboju iparada (“[x, y, * isinmi]”), awọn maapu bọtini/iye (fun apẹẹrẹ, {“bandwidth”: b, “lairi” ”. Ninu awọn kilasi, o ṣee ṣe lati ṣe akanṣe ihuwasi ibaramu pẹlu lilo ọna “__match__()”.

lati awọn kilasi data gbe wọle dataclass

@dataclass
Ojuami kilasi:
x:int
y:int

defi whereis(ojuami):
ojuami baramu:
Ojuami ọran (0, 0):
tẹjade ("Oti ipilẹṣẹ")
Ojuami ọran (0, y):
titẹ (f"Y={y}")
Atokọ ọran (x, 0):
titẹ (f"X={x}")
Atokọ ọran():
tẹjade ("Ibi miiran")
irú_:
tẹjade ("Kii ṣe aaye kan")

ojuami baramu:
Opo ọran (x, y) ti x == y:
tẹjade (f"Y=X ni {x}")
Atokọ ọran (x, y):
tẹjade (f"Kii si lori akọ-rọsẹ")

Pupa, ALAWE, bulu = 0, 1, 2
awọ baramu:
irú .PUPA:
tẹjade ("Mo ri pupa!")
irú .GREEN:
tẹjade ("koriko jẹ alawọ ewe")
irú .BLU
E:
tẹjade (“Mo rilara blues :(”)

A ti pese eto kan fun atunyẹwo awọn abulẹ pẹlu esiperimenta imuse dabaa sipesifikesonu, ṣugbọn ik ti ikede jẹ ṣi sísọ... Fun apere, ti a nṣe Dipo ikosile "case _:" fun iye aiyipada, lo koko-ọrọ "miran:" tabi "aiyipada:", niwon "_" ni awọn ipo miiran ti lo gẹgẹbi iyipada igba diẹ. Paapaa ibeere ni eto inu, eyiti o da lori titumọ awọn ikosile tuntun sinu bytecode ti o jọra si eyiti a lo fun “ti o ba jẹ… elif… miiran” awọn itumọ, eyiti kii yoo pese iṣẹ ṣiṣe ti o fẹ nigbati o ba n ṣiṣẹ awọn akojọpọ nla ti awọn afiwera.

orisun: opennet.ru

Fi ọrọìwòye kun