Guido van Rossum рд▓реЗ Python рдорд╛ рдврд╛рдБрдЪрд╛ рдорд┐рд▓реНрджреЛ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдердкреНрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрдиреБрднрдпреЛ

Guido van Rossum рдкрд░рд┐рдЪрдп рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╕рдореАрдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдорд╕реНрдпреМрджрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╣рд░реБ рдкрд╛рдЗрдердирдорд╛ рдврд╛рдБрдЪрд╛ рдорд┐рд▓реНрджреЛ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ (рдорд┐рд▓рд╛рди рд░ рдХреЗрд╕) рд▓рд╛рдЧреВ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ред рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБрдкрд░реНрдЫ рдХрд┐ рдврд╛рдБрдЪрд╛ рдорд┐рд▓реНрдиреЗ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдердкреНрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд╣рд░реВ 2001 рд░ 2006 рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдЗрд╕рдХреЗрдХрд╛ рдЫрдиреН (pep-0275, pep-3103), рддрд░ рдорд┐рд▓реНрджреЛ рдЪреЗрдирд╣рд░реВ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ "рдпрджрд┐ ... elif ... else" рдирд┐рд░реНрдорд╛рдгрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиреЗ рдкрдХреНрд╖рдорд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдпреЛред

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

def http_error(рд╕реНрдерд┐рддрд┐):
рдорд┐рд▓рд╛рди рд╕реНрдерд┐рддрд┐:
рдХреЗрд╕ реж:
рдлрд┐рд░реНрддрд╛ "рдЦрд░рд╛рдм рдЕрдиреБрд░реЛрдз"
рдХреЗрд╕ 401|403|404:
рдлрд┐рд░реНрддрд╛ "рдЕрдиреБрдорддрд┐ рдЫреИрди"
рдХреЗрд╕ реж:
рдлрд┐рд░реНрддрд╛ "рдо рдЪрд┐рдпрд╛рдкрд╛рдиреА рд╣реБрдБ"
рдХреЗрд╕_:
рдлрд┐рд░реНрддрд╛ "рдЕрд░реВ рдХреЗрд╣рд┐"

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

рдбрд╛рдЯрд╛рдХреНрд▓рд╛рд╕рдмрд╛рдЯ рдбрд╛рдЯрд╛рдХреНрд▓рд╛рд╕ рдЖрдпрд╛рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

@dataclass
рдХрдХреНрд╖рд╛ рдмрд┐рдиреНрджреБ:
x:int
y:int

def whereis (рдмрд┐рдиреНрджреБ):
рдорд┐рд▓рд╛рди рдмрд┐рдиреНрджреБ:
рдХреЗрд╕ рдмрд┐рдиреНрджреБ (реж, реж):
рдкреНрд░рд┐рдиреНрдЯ ("рдореВрд▓")
рдХреЗрд╕ рдмрд┐рдиреНрджреБ (0, y):
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН(f"Y={y}")
рдХреЗрд╕ рдмрд┐рдиреНрджреБ(x, 0):
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН(f"X={x}")
рдХреЗрд╕ рдмрд┐рдиреНрджреБ ():
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН ("рдЕрдиреНрдп рдХрддреИ")
рдХреЗрд╕_:
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН ("рдмрд┐рдиреНрджреБ рд╣реЛрдЗрди")

рдорд┐рд▓рд╛рди рдмрд┐рдиреНрджреБ:
рдХреЗрд╕ рдмрд┐рдиреНрджреБ(x, y) рдпрджрд┐ x == y:
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН(f"Y=X рдорд╛ {x}")
рдХреЗрд╕ рдмрд┐рдиреНрджреБ(x, y):
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН(f"рд╡рд┐рдХрд░реНрдгрдорд╛ рд╣реЛрдЗрди")

рд░рд╛рддреЛ, рд╣рд░рд┐рдпреЛ, рдиреАрд▓реЛ = реж, рез, реи
рдорд┐рд▓реНрдиреЗ рд░рдВрдЧ:
рдХреЗрд╕ .RED:
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН ("рдо рд░рд╛рддреЛ рджреЗрдЦреНрдЫреБ!")
рдорд╛рдорд▓рд╛ред рд╣рд░рд┐рдпреЛ:
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН ("рдШрд╛рдБрд╕ рд╣рд░рд┐рдпреЛ рдЫ")
рдХреЗрд╕ .BLU
E:
рдЫрд╛рдкреНрдиреБрд╣реЛрд╕реН("рдо рдирд┐рд▓реЛ рдорд╣рд╕реБрд╕ рдЧрд░реНрджреИрдЫреБ :(")

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди