Guido van Rossum เบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบเบฑเบš Python

Guido van Rossum เปเบ™เบฐ เบ™เบณ เบฎเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเบ—เบปเบšเบ—เบงเบ™เบŠเบธเบกเบŠเบปเบ™ เบ‚เปเป‰เบชเบฐเป€เบžเบฒเบฐ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบฎเบนเบšเปเบšเบš (เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเปเบฅเบฐเบเปเบฅเบฐเบ™เบต) เปƒเบ™ Python. เบ„เบงเบ™เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ‚เปเป‰เบชเบฐเป€เบซเบ™เบตเบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบฎเบนเบšเปเบšเบšเป„เบ”เป‰เบ–เบทเบเป€เบœเบตเบเปเบœเปˆเปเบฅเป‰เบงเปƒเบ™เบ›เบต 2001 เปเบฅเบฐ 2006 (pep-0275, pep-3103), เปเบ•เปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš "เบ–เป‰เบฒ ... elif ... เบญเบทเปˆเบ™" เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ•เปˆเบญเบ‡เป‚เบชเป‰เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆ.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบซเบกเปˆเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "match" เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เปƒเบ™ Scala, Rust, เปเบฅเบฐ F#, เป€เบŠเบดเปˆเบ‡เบ›เบฝเบšเบ—เบฝเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ•เบฑเบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "เบเปเบฅเบฐเบ™เบต". เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "เบชเบฐเบซเบผเบฑเบš" เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ C, Java, เปเบฅเบฐ JavaScript, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ "match" เบชเบฐเป€เบซเบ™เบตเบซเบผเบฒเบ. เบŸเบฑเบ‡เบŠเบฑเบ™เบเบงเป‰เบฒเบ‡. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™เบฅเบฐเบซเบฑเบ”, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบงเบฑเบ”เบ–เบธ Python เปเบฅเบฐเบเบฒเบ™เปเบเป‰เบšเบฑเบ™เบซเบฒเบ‡เปˆเบฒเบ, เปเบฅเบฐเบเบฑเบ‡เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบเป‰เบญเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบชเบฐเบ–เบดเบ”.

def http_error(เบชเบฐเบ–เบฒเบ™เบฐ):
เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™:
เบเปเบฅเบฐเบ™เบต 400:
เบเบฑเบšเบ„เบทเบ™ "เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบšเปเปˆเบ”เบต"
เบเปเบฅเบฐเบ™เบต 401|403|404:
เบเบฑเบšเบ„เบทเบ™ "เบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰"
เบเปเบฅเบฐเบ™เบต 418:
เบเบฑเบšเบ„เบทเบ™ "เบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบŠเบฒ"
case_:
เบเบฑเบšเบ„เบทเบ™ "เบญเบฑเบ™เบญเบทเปˆเบ™"

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” unpack เบงเบฑเบ”เบ–เบธ, tuples, เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ, เปเบฅเบฐเบฅเปเบฒเบ”เบฑเบš arbitrary เป€เบžเบทเปˆเบญเบœเบนเบเบกเบฑเบ”เบ•เบปเบงเปเบ›เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เปเบกเปˆเปเบšเบšเบ—เบตเปˆเบŠเป‰เบญเบ™เบเบฑเบ™, เปƒเบŠเป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ "เบ–เป‰เบฒ" เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เปเบกเปˆเปเบšเบš, เปƒเบŠเป‰เบซเบ™เป‰เบฒเบเบฒเบ (โ€œ[x, y, * rest]โ€), เปเบœเบ™เบ—เบตเปˆเบฅเบฐเบซเบฑเบ” / เบกเบนเบ™เบ„เปˆเบฒ (เบ•เบปเบงเบขเปˆเบฒเบ‡, {"เปเบšเบ™เบงเบดเบ”": b, "latency โ€:l} เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบ„เปˆเบฒ "bandwidth" เปเบฅเบฐ "latency" เปเบฅเบฐเบงเบฑเบ”เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบก), extract subtemplates (":=" operator), เปƒเบŠเป‰เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบกเบตเบŠเบทเปˆเปƒเบ™ template. เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเปเบ•เปˆเบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบต โ€œ__match__()โ€.

เบˆเบฒเบ dataclasses เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ dataclass

@dataclass
เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡โ€‹:
x:int
y: int

def whereis(เบˆเบธเบ”):
เบˆเบธเบ”เบˆเบฑเบšเบ„เบนเปˆ:
เบเปเบฅเบฐเบ™เบตเบˆเบธเบ”(0, 0):
เบžเบดเบก("เบ•เบปเป‰เบ™เบเปเบฒเป€เบ™เบตเบ”")
case Point(0, y):
print(f"Y={y}")
case Point(x,0):
เบžเบดเบก(f"X={x}")
เบเปเบฅเบฐเบ™เบตเบˆเบธเบ”():
เบžเบดเบก("เบšเปˆเบญเบ™เบญเบทเปˆเบ™")
case_:
เบžเบดเบก ("เบšเปเปˆเปเบกเปˆเบ™เบˆเบธเบ”")

เบˆเบธเบ”เบˆเบฑเบšเบ„เบนเปˆ:
case Point(x, y) เบ–เป‰เบฒ x == y:
print(f"Y=X เบขเบนเปˆ {x}")
case Point(x, y):
เบžเบดเบก (f "เบšเปเปˆเบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡")

เบชเบตเปเบ”เบ‡, เบชเบตเบ‚เบฝเบง, เบชเบตเบŸเป‰เบฒ = 0, 1, 2
เบชเบตเบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™:
เบเปโ€‹เบฅเบฐโ€‹เบ™เบต .RED:
เบžเบดเบก ("เบ‚เป‰เบญเบเป€เบซเบฑเบ™เบชเบตเปเบ”เบ‡!")
เบเปโ€‹เบฅเบฐโ€‹เบ™เบต .GREEN:
เบžเบดเบก("เบซเบเป‰เบฒเป€เบ›เบฑเบ™เบชเบตเบ‚เบฝเบง")
เบเปเบฅเบฐเบ™เบต .BLU
E:
เบžเบดเบก(โ€œเบ‚เป‰เบญเบเบฎเบนเป‰เบชเบถเบเป€เบ›เบฑเบ™เบชเบตเบŸเป‰เบฒ :(โ€œ)

เบŠเบธเบ”เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™ เป€เบžเบตเป‰เบก เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบฅเบญเบ‡โ€‹ เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹, เปเบ•เปˆโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบชเบธเบ”โ€‹เบ—เป‰เบฒเบโ€‹เปเบกเปˆเบ™โ€‹เบเบฑเบ‡โ€‹ เบชเบปเบ™เบ—เบฐเบ™เบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡ เบชเบฐเป€เปœเบตเปƒเบซเป‰ เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เบญเบญเบ "case _:" เบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปƒเบŠเป‰เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ "else:" เบซเบผเบท "default:", เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ "_" เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบญเบทเปˆเบ™เป†เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ›เบŠเบปเปˆเบงเบ„เบฒเบง. เบเบฑเบ‡เป€เบ›เบฑเบ™เบ„เปเบฒเบ–เบฒเบกเปเบกเปˆเบ™เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบžเบฒเบเปƒเบ™, เป€เบŠเบดเปˆเบ‡เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เปเบ›เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปƒเบซเบกเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ bytecode เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš "เบ–เป‰เบฒ ... elif ... เบญเบทเปˆเบ™" เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบšเปเปˆเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบŠเบธเบ”เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™