Guido van Rossum рдиреЗ Python рдордзреНрдпреЗ рдкреЕрдЯрд░реНрди рдЬреБрд│рдгрд╛рд░реЗ рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рд▓рд╛

Guido рд╡реНрд╣реЕрди Rossum рдУрд│рдЦ рдХрд░реВрди рджрд┐рд▓реА рд╕рдореБрджрд╛рдп рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рд╕рд╛рдареА рдорд╕реБрджрд╛ рддрдкрд╢реАрд▓ Python рдордзреНрдпреЗ рдкреЕрдЯрд░реНрди рдЬреБрд│рдгрд╛рд░реЗ рдСрдкрд░реЗрдЯрд░ (рдореЕрдЪ рдЖрдгрд┐ рдХреЗрд╕) рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛рд╡реЗ рдХреА рдирдореБрдирд╛ рдЬреБрд│рдгрд╛рд░реЗ рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрдгреНрдпрд╛рдЪреЗ рдкреНрд░рд╕реНрддрд╛рд╡ 2001 рдЖрдгрд┐ 2006 рдордзреНрдпреЗ рдЖрдзреАрдЪ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд (pep-0275, pep-3103), рдкрд░рдВрддреБ рдЬреБрд│рдгрд╛рд░реНтАНрдпрд╛ рд╕рд╛рдЦрд│реА рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА тАЬif... elif... elseтАЭ рд░рдЪрдирд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдирд╛рдХрд╛рд░рдгреНрдпрд╛рдд рдЖрд▓реА.

рдирд╡реАрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реНрдХрд╛рд▓рд╛, рд░рд╕реНрдЯ рдЖрдгрд┐ F# рдордзреНрдпреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ "рдореЕрдЪ" рдСрдкрд░реЗрдЯрд░рд╕рд╛рд░рдЦреА рдЖрд╣реЗ, рдЬреА "рдХреЗрд╕" рдСрдкрд░реЗрдЯрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдмреНрд▓реЙрдХреНрд╕рдордзреНрдпреЗ рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗрд▓реНрдпрд╛ рдирдореБрдиреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реВрдЪреАрд╕рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рдЪреА рддреБрд▓рдирд╛ рдХрд░рддреЗ. C, Java рдЖрдгрд┐ JavaScript рдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛ "рд╕реНрд╡рд┐рдЪ" рдСрдкрд░реЗрдЯрд░рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, "рдЬреБрд│рдгреНрдпрд╛"-рдЖрдзрд╛рд░рд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдмрд░реЗрдЪ рдХрд╛рд╣реА рджреЗрддрд╛рдд рд╡рд┐рд╕реНрддреГрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛. рд╣реЗ рдирдореВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдСрдкрд░реЗрдЯрд░ рдХреЛрдбрдЪреА рд╡рд╛рдЪрдиреАрдпрддрд╛ рд╕реБрдзрд╛рд░рддреАрд▓, рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдгрд┐ рдбреАрдмрдЧрд┐рдВрдЧрдЪреА рддреБрд▓рдирд╛ рд╕реБрд▓рдн рдХрд░рддреАрд▓ рдЖрдгрд┐ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рд╢рдХреНрдпрддреЗрдореБрд│реЗ рдХреЛрдбрдЪреА рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддрд╛ рджреЗрдЦреАрд▓ рд╡рд╛рдврд╡рддреАрд▓. рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рддрдкрд╛рд╕рдгреА.

def http_error(рд╕реНрдерд┐рддреА):
рдЬреБрд│рдгреА рд╕реНрдерд┐рддреА:
рдХреЗрд╕ 400:
"рдЦрд░рд╛рдм рд╡рд┐рдирдВрддреА" рдкрд░рдд рдХрд░рд╛
рдХреЗрд╕ 401|403|404:
"рдкрд░рд╡рд╛рдирдЧреА рдирд╛рд╣реА" рдкрд░рдд рдХрд░рд╛
рдХреЗрд╕ 418:
рдкрд░рдд "рдореА рдПрдХ рдЪрд╣рд╛рдЪреА рднрд╛рдВрдбреА рдЖрд╣реЗ"
рдХреЗрд╕_:
"рдХрд╛рд╣реАрддрд░реА" рдкрд░рдд рдХрд░рд╛

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд┐рджреНрдпрдорд╛рди рдореВрд▓реНрдпрд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдЯреНрдпреВрдкрд▓реНрд╕, рд╕реВрдЪреА рдЖрдгрд┐ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдиреБрдХреНрд░рдо рдЕрдирдкреЕрдХ рдХрд░реВ рд╢рдХрддрд╛. рдиреЗрд╕реНрдЯреЗрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЯреЗрдореНрдкреНрд▓реЗрдЯрдордзреНрдпреЗ рдЕрддрд┐рд░рд┐рдХреНрдд тАЬрдЬрд░тАЭ рдЕрдЯреА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА, рдорд╛рд╕реНрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА (тАЬ[x, y, *rest]тАЭ), рдХреА/рд╡реНрд╣реЕрд▓реНрдпреВ рдореЕрдкрд┐рдВрдЧ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, {тАЬрдмрдБрдбрд╡рд┐рдбреНрдетАЭ: b, тАЬрд▓реЗрдЯрдиреНрд╕реА) рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ тАЭ: l} "рдмрдБрдбрд╡рд┐рдбреНрде" рдЖрдгрд┐ "рд▓реЗрдЯрдиреНрд╕реА" рдореВрд▓реНрдпреЗ рдЖрдгрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА, рд╕рдмрдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ рдХрд╛рдврд╛ (":=" рдСрдкрд░реЗрдЯрд░), рдЯреЗрдореНрдкрд▓реЗрдЯрдордзреНрдпреЗ рдирд╛рдорд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╡рд╛рдкрд░рд╛. рд╡рд░реНрдЧрд╛рдВрдордзреНрдпреЗ, тАЬ__match__()тАЭ рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рдЬреБрд│рдгрд╛рд░реЗ рд╡рд░реНрддрди рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ.

рдбреЗрдЯрд╛рдХреНрд▓рд╛рд╕рдордзреВрди рдбреЗрдЯрд╛рдХреНрд▓рд╛рд╕ рдЖрдпрд╛рдд рдХрд░рд╛

@dataclass
рд╡рд░реНрдЧ рдмрд┐рдВрджреВ:
x:int
y:int

def whereis(рдмрд┐рдВрджреВ):
рдЬреБрд│рдгреА рдмрд┐рдВрджреВ:
рдХреЗрд╕ рдкреЙрдЗрдВрдЯ(0, 0):
рдкреНрд░рд┐рдВрдЯ ("рдореВрд│")
рдХреЗрд╕ рдкреЙрдЗрдВрдЯ(0, y):
рдкреНрд░рд┐рдВрдЯ(f"Y={y}")
рдХреЗрд╕ рдкреЙрдЗрдВрдЯ(x, 0):
рдкреНрд░рд┐рдВрдЯ(f"X={x}")
рдХреЗрд╕ рдкреЙрдЗрдВрдЯ():
рдореБрджреНрд░рд┐рдд рдХрд░рд╛ ("рдЗрддрд░ рдХреБрдареЗрддрд░реА")
рдХреЗрд╕_:
рдкреНрд░рд┐рдВрдЯ ("рдмрд┐рдВрджреВ рдирд╛рд╣реА")

рдЬреБрд│рдгреА рдмрд┐рдВрджреВ:
рдХреЗрд╕ рдкреЙрдЗрдВрдЯ(x, y) рдЬрд░ x == y:
рдкреНрд░рд┐рдВрдЯ (f"Y=X at {x}")
рдХреЗрд╕ рдкреЙрдЗрдВрдЯ(x, y):
рдкреНрд░рд┐рдВрдЯ (f"рдХрд░реНрдгрд╛рд╡рд░ рдирд╛рд╣реА")

рд▓рд╛рд▓, рд╣рд┐рд░рд╡рд╛, рдирд┐рд│рд╛ = 0, 1, 2
рд░рдВрдЧ рдЬреБрд│рд╡рд╛:
рдХреЗрд╕ .рд▓рд╛рд▓:
рдкреНрд░рд┐рдВрдЯ ("рдорд▓рд╛ рд▓рд╛рд▓ рджрд┐рд╕рдд рдЖрд╣реЗ!")
рдХреЗрд╕ .рдЧреНрд░реАрди:
рдкреНрд░рд┐рдВрдЯ ("рдЧрд╡рдд рд╣рд┐рд░рд╡реЗ рдЖрд╣реЗ")
рдХреЗрд╕ .BLU
E:
рдкреНрд░рд┐рдВрдЯ ("рдорд▓рд╛ рдмреНрд▓реВрдЬ рд╡рд╛рдЯрдд рдЖрд╣реЗ :(")

рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рд╕рд╛рдареА рд╕рдВрдЪ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ рдкреЕрдЪ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рд╣ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрдкрд╢реАрд▓, рдкрд░рдВрддреБ рдЕрдВрддрд┐рдо рдЖрд╡реГрддреНрддреА рдЕрджреНрдпрд╛рдк рдЖрд╣реЗ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рджреЗрдК рдХреЗрд▓реЗ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпрд╛рд╕рд╛рдареА "case _:" рдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдРрд╡рдЬреА, "else:" рдХрд┐рдВрд╡рд╛ "default:" рд╣рд╛ рдХреАрд╡рд░реНрдб рд╡рд╛рдкрд░рд╛, рдХрд╛рд░рдг рдЗрддрд░ рд╕рдВрджрд░реНрднрд╛рдВрдордзреНрдпреЗ "_" рд╣рд╛ рддрд╛рддреНрдкреБрд░рддрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рдЕрдВрддрд░реНрдЧрдд рд╕рдВрд╕реНрдерд╛ рджреЗрдЦреАрд▓ рд╢рдВрдХрд╛рд╕реНрдкрдж рдЖрд╣реЗ, рдЬреА тАЬif... elif... elseтАЭ рд░рдЪрдирд╛рдВрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдмрд╛рдпрдЯреЗрдХреЛрдбрдордзреНрдпреЗ рдирд╡реАрди рдЕрднрд┐рд╡реНрдпрдХреНрддреА рднрд╛рд╖рд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ, рдЬреА рддреБрд▓рдирд╛рдВрдЪреНрдпрд╛ рдЦреВрдк рдореЛрдареНрдпрд╛ рд╕рдВрдЪрд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛рдирд╛ рдЗрдЪреНрдЫрд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдгрд╛рд░ рдирд╛рд╣реА.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛