рдкрд╛рдЗрдерди рдХреЛрдбрдХреЛ рек рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдирд╣рд░реВ рдЯрд╛рдЗрдк рдЪреЗрдХ рдЧрд░реНрдиреЗ рдмрд╛рдЯреЛред рднрд╛рдЧ 4

рдЖрдЬ рд╣рд╛рдореА Dropbox Python рдХреЛрдб рдкреНрд░рдХрд╛рд░ рдирд┐рдпрдиреНрддреНрд░рдгрд╕рдБрдЧ рдХрд╕рд░реА рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╕рд╛рдордЧреНрд░реАрдХреЛ рдЕрдиреБрд╡рд╛рджрдХреЛ рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рдирд╛рдХрд░реНрд╖рдг рдЧрд░рд╛рдЙрдБрдЫреМрдВред

рдкрд╛рдЗрдерди рдХреЛрдбрдХреЛ рек рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдирд╣рд░реВ рдЯрд╛рдЗрдк рдЪреЗрдХ рдЧрд░реНрдиреЗ рдмрд╛рдЯреЛред рднрд╛рдЧ 4

рдбреНрд░рдкрдмрдХреНрд╕рд▓реЗ рдкрд╛рдЗрдердирдорд╛ рдзреЗрд░реИ рд▓реЗрдЦреНрдЫред рдпреЛ рдПрдЙрдЯрд╛ рднрд╛рд╖рд╛ рд╣реЛ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдЕрддреНрдпрдиреНрдд рд╡реНрдпрд╛рдкрдХ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ - рджреБрдмреИ рдмреНрдпрд╛рдХрдПрдиреНрдб рд╕реЗрд╡рд╛рд╣рд░реВ рд░ рдбреЗрд╕реНрдХрдЯрдк рдХреНрд▓рд╛рдЗрдиреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ред рд╣рд╛рдореА Go, TypeScript рд░ Rust рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ, рддрд░ Python рд╣рд╛рдореНрд░реЛ рдореБрдЦреНрдп рднрд╛рд╖рд╛ рд╣реЛред рд╣рд╛рдореНрд░реЛ рд╕реНрдХреЗрд▓рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рд░ рд╣рд╛рдореА рдкрд╛рдЗрдерди рдХреЛрдбрдХрд╛ рд▓рд╛рдЦреМрдВ рд▓рд╛рдЗрдирд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрджреИрдЫреМрдВ, рдпреЛ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ рдХрд┐ рдпрд╕реНрддреЛ рдХреЛрдбрдХреЛ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧрд▓реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдкрдорд╛ рдпрд╕рдХреЛ рдмреБрдЭрд╛рдЗрд▓рд╛рдИ рдЬрдЯрд┐рд▓ рдмрдирд╛рдпреЛ рд░ рд╢реНрд░рдо рдЙрддреНрдкрд╛рджрдХрддрд╛рд▓рд╛рдИ рдЧрдореНрднреАрд░ рд░реВрдкрдорд╛ рдЕрд╕рд░ рдЧрд░реНрди рдерд╛рд▓реНрдпреЛред рдпрд╕ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рдХрдо рдЧрд░реНрди, рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХреЛрдбрд▓рд╛рдИ mypy рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪрдорд╛ рдмрд┐рд╕реНрддрд╛рд░реИ рдЯреНрд░рд╛рдиреНрдЬрд┐рд╕рди рдЧрд░реНрди рдерд╛рд▓реЗрдХрд╛ рдЫреМрдВред рдпреЛ рд╕рдореНрднрд╡рддрдГ рдкрд╛рдЗрдердирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реНрдЯреНрдпрд╛рдиреНрдб-рдЕрд▓реЛрди рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рдкреНрд░рдгрд╛рд▓реА рд╣реЛред Mypy рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ, рдпрд╕рдХреЛ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ Dropbox рдорд╛ рдХрд╛рдо рдЧрд░реНрдЫрдиреНред

рдбреНрд░рдкрдмрдХреНрд╕ рдпрд╕ рд╕реНрдХреЗрд▓рдорд╛ рдкрд╛рдЗрдерди рдХреЛрдбрдорд╛ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХрдореНрдкрдиреАрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдерд┐рдпреЛред Mypy рдЖрдЬрдХрд▓ рд╣рдЬрд╛рд░реМрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рдЙрдкрдХрд░рдг, рддрд┐рдиреАрд╣рд░реВ рднрдиреНрдЫрдиреН, "рд▓рдбрд╛рдИрдорд╛ рдкрд░реАрдХреНрд╖рдг" рдЕрдирдЧрд┐рдиреНрддреА рдкрдЯрдХ рдЧрд░рд┐рдПрдХреЛ рдЫред рдЕрд╣рд┐рд▓реЗрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкреБрдЧреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓реЗ рд▓рд╛рдореЛ рдпрд╛рддреНрд░рд╛ рдЧрд░реНрдиреБрдкрд░реЗрдХреЛ рдЫ ред рдмрд╛рдЯреЛрдорд╛ рдзреЗрд░реИ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕рд╣рд░реВ рд░ рдЕрд╕рдлрд▓ рдкреНрд░рдпреЛрдЧрд╣рд░реВ рднрдПрдХрд╛ рдЫрдиреНред рдпреЛ рдЯреБрдХреНрд░рд╛рд▓реЗ рдкрд╛рдЗрдердирдорд╛ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░рдХреЛ рдЬрд╛рдБрдЪрдХреЛ рдЗрддрд┐рд╣рд╛рд╕рд▓рд╛рдИ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ, рдореЗрд░реЛ рдЕрдХрд╛рджрдорд┐рдХ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛ рдпрд╕рдХреЛ рдЪрдЯреНрдЯрд╛рди рд╕реБрд░реБрджреЗрдЦрд┐ рдЖрдЬрд╕рдореНрдо, рдЬрдм рдЕрдирдЧрд┐рдиреНрддреА рдкрд╛рдЗрдерди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдмреАрдЪ рдЯрд╛рдЗрдк рдЬрд╛рдБрдЪрд╣рд░реВ рд░ рдкреНрд░рдХрд╛рд░ рд╕рдВрдХреЗрддрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рднрдПрдХреЛ рдЫред рдпреА рд╕рдВрдпрдиреНрддреНрд░рд╣рд░реВ рдЕрдм IDEs рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╣рд░реВ рдЬрд╕реНрддрд╛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЫрдиреНред

тЖТ рджреЛрд╕реНрд░реЛ рднрд╛рдЧ рдкрдвреНрдиреБрд╣реЛрд╕реН

рдЯрд╛рдЗрдк рдЬрд╛рдБрдЪ рдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫ?

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХрд╣рд┐рд▓реНрдпреИ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рдЯрд╛рдЗрдк рдЧрд░рд┐рдПрдХреЛ рдкрд╛рдЗрдерди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВ рд╣рд╛рд▓реИ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩ рд░ mypy рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХрд┐рди рдпрддрд┐ рдзреЗрд░реИ рдЧрдбрдмрдб рднрдПрдХреЛ рдЫ рднрдиреЗрд░ рдЕрд▓рд┐рдХрддрд┐ рднреНрд░рдордорд╛ рдкрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╡рд╛ рдпреЛ рд╣реБрди рд╕рдХреНрдЫ рдХрд┐ рддрдкрд╛рдИрд▓реЗ рдкрд╛рдЗрдердирд▓рд╛рдИ рдпрд╕рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдЩрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдорди рдкрд░рд╛рдЙрдиреБрд╣реБрдиреНрдЫ, рд░ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рддреНрдпрд╕рд▓реЗ рддрдкрд╛рдИрд▓рд╛рдИ рдЕрдкреНрдареНрдпрд╛рд░реЛ рдкрд╛рд░реНрдЫред рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩрдХреЛ рдореВрд▓реНрдпрдХреЛ рдХреБрдЮреНрдЬреА рдирд┐рд░реНрдгрдпрд╣рд░реВрдХреЛ рдорд╛рдкрди рд╣реЛ: рддрдкрд╛рдИрдВрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрддрд┐ рдареВрд▓реЛ рд╣реБрдиреНрдЫ, рддрдкрд╛рдИрдВ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩрддрд░реНрдл рдЬрддрд┐ рдмрдвреА рдЭреБрдХрд╛рдЙрдиреБрд╣реБрдиреНрдЫ, рд░ рдЕрдиреНрддрддрдГ, рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╡рд╛рд╕реНрддрд╡рдореИ рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реБрдиреНрдЫред

рдорд╛рдиреМрдВ рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдХрд╛рд░рдорд╛ рд╣рдЬрд╛рд░реМрдВ рд▓рд╛рдЗрдирд╣рд░реВрдорд╛ рдкреБрдЧреЗрдХреЛ рдЫ, рд░ рдпрд╕рд▓реЗ рдзреЗрд░реИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВ рдпрд╕рдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреН рднрдиреЗрд░ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреНрдЫред рд╣рд╛рдореНрд░реЛ рдЕрдиреБрднрд╡рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджрд╛, рд╣рд╛рдореА рднрдиреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рдпрд╕рдХреЛ рдХреЛрдб рдмреБрдЭреНрди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХрд╛рдпрдо рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реБрдиреЗрдЫред рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рдмрд┐рдирд╛, рдпреЛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЧрд╛рд╣реНрд░реЛ рд╣реБрди рд╕рдХреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдХреБрди рддрд░реНрдХрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рд╡рд╛ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рдХреБрди рдкреНрд░рдХрд╛рд░рдХрд╛ рдорд╛рдирд╣рд░реВ рдлрд░реНрдХрд╛рдЙрди рд╕рдХреНрдЫред рдпрд╣рд╛рдБ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрдиреН рдЬреБрди рдкреНрд░рд╛рдпрдГ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдЬрд╡рд╛рдл рджрд┐рди рдЧрд╛рд╣реНрд░реЛ рд╣реБрдиреНрдЫ:

  • рдпреЛ рдкреНрд░рдХрд╛рд░реНрдп рдлрд┐рд░реНрддрд╛ рдЧрд░реНрди рд╕рдХреНрдЫ None?
  • рдпреЛ рддрд░реНрдХ рдХреЗ рд╣реБрдиреБрдкрд░реНрдЫ? items?
  • рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ id: int рд╣реЛ рд░, str, рд╡рд╛ рд╕рд╛рдпрдж рдХреЗрд╣рд┐ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХрд╛рд░?
  • рдпреЛ рддрд░реНрдХ рдПрдХ рд╕реВрдЪреА рд╣реБрдиреБрдкрд░реНрдЫ? рдХреЗ рдпрд╕рдорд╛ рдЯрдкрд▓ рдкрд╛рд╕ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ?

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЯрд╛рдЗрдк-рдПрдиреЛрдЯреЗрдЯреЗрдб рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реЗрд░реНрдиреБрд╣реБрдиреНрдЫ рд░ рдпреА рдЬрд╕реНрддрд╛ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рд╣реЛ рднрдиреЗрд░ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ:

class Resource:
    id: bytes
    ...
    def read_metadata(self, 
                      items: Sequence[str]) -> Dict[str, MetadataItem]:
        ...

  • read_metadata рдлрд┐рд░реНрддрд╛ рдЧрд░реНрджреИрди NoneрдХрд┐рдирднрдиреЗ рдлрд┐рд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рдЫреИрди Optional[тАж].
  • рддрд░реНрдХ items рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рдХреНрд░рдо рд╣реЛред рдпрд╕рд▓рд╛рдИ рдХреБрдиреИ рдкрдирд┐ рдХреНрд░рдордорд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрди рд╕рдХрд┐рдБрджреИрдиред
  • рдПрдЯреНрд░рд┐рдмреНрдпреБрдЯ id рдмрд╛рдЗрдЯрдХреЛ рд╕реНрдЯреНрд░рд┐рдЩ рд╣реЛред

рдПрдХ рдЖрджрд░реНрд╢ рд╕рдВрд╕рд╛рд░рдорд╛, рдПрдХрд▓реЗ рдЖрд╢рд╛ рдЧрд░реНрджрдЫ рдХрд┐ рддреНрдпрд╕реНрддрд╛ рд╕рдмреИ рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рдирд┐рд░реНрдорд┐рдд рдХрд╛рдЧрдЬрд╛рдд (docstring) рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдиреЗрдЫред рддрд░ рдЕрдиреБрднрд╡рд▓реЗ рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдХрд┐ рддреНрдпрд╕реНрддрд╛ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдкреНрд░рд╛рдп: рдХреЛрдбрдорд╛ рдЕрд╡рд▓реЛрдХрди рдЧрд░реНрджреИрди рдЬрд╕рдХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреБ рдкрд░реНрдЫред рдпрджрд┐ рдпрд╕реНрддреЛ рдХрд╛рдЧрдЬрд╛рдд рдХреЛрдбрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рдХреЛ рдкреВрд░реНрдг рд╢реБрджреНрдзрддрд╛рдорд╛ рднрд░реЛрд╕рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред рдпреЛ рдХрд╛рдЧрдЬрд╛рдд рдЕрд╕реНрдкрд╖реНрдЯ, рдЕрд╕реНрдкрд╖реНрдЯ, рд░ рдЧрд▓рддрдлрд╣рдореА рдХреЛ рд▓рд╛рдЧреА рдЦреБрд▓рд╛ рд╣реБрди рд╕рдХреНрдЫред рдареВрд▓рд╛ рдЯреЛрд▓реА рд╡рд╛ рдареВрд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛, рдпреЛ рд╕рдорд╕реНрдпрд╛ рдЕрддреНрдпрдиреНрддреИ рддреАрд╡реНрд░ рд╣реБрди рд╕рдХреНрдЫред

рдкрд╛рдЗрдерди рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд╡рд╛ рдордзреНрдп-рдЪрд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реБрдБрджрд╛, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рд╕рдлрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рд░ рдкрд╛рдЗрдерди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХрдореНрдкрдиреАрд╣рд░реВрд▓реЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрдирдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН: "рдХреЗ рд╣рд╛рдореАрд▓реЗ рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рдЯрд╛рдЗрдк рдЧрд░рд┐рдПрдХреЛ рднрд╛рд╖рд╛рдорд╛ рдкреБрди: рд▓реЗрдЦреНрдиреБрдкрд░реНрдЫ?"

рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдЬрд╕реНрддреИ mypy рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓рд╛рдИ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдФрдкрдЪрд╛рд░рд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рджрд╛рди рдЧрд░реЗрд░, рд░ рддреНрдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдШреЛрд╖рдгрд╛рд╣рд░реВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдПрд░ (рд░, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдкрдорд╛, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрд╕реНрддрд┐рддреНрд╡рдХреЛ рдЬрд╛рдБрдЪ рдЧрд░реА) рдорд╛рдерд┐рдХреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╣рд╛рдореА рднрдиреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рдпреА рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рддреНрдпрд╕реНрддрд╛ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрдорд╛ рдЕрдиреНрдп рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЫрдиреН, рд░ рддрд┐рдиреАрд╣рд░реВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рдЫрдиреН:

  • рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдХреЗрд╣реА рд╕рд╛рдирд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдЫ (рд░ рдкрдирд┐ рддреНрдпрддрд┐ рд╕рд╛рдиреЛ рдЫреИрди)ред рдПрдЙрдЯрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реЛ рдЬрдм рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдорд╛рди рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдмрд┐рд░реНрд╕рдиреНрдЫрдиреН None рд╡рд╛ рдХреЗрд╣рд┐ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рдЕрд╡рд╕реНрдерд╛ред
  • рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдЩ рдХреЛрдб рдзреЗрд░реИ рд╕рд░рд▓реАрдХреГрдд рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐рдирднрдиреЗ рдЯрд╛рдЗрдк рдкрд░реАрдХреНрд╖рдХрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреБрди рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдмрддрд╛рдЙрдБрдЫред рдПрдХреИ рд╕рдордпрдорд╛, рд╣рд╛рдореАрд▓реЗ рдХреЛрдбрдХреЛ 100% рдкрд░реАрдХреНрд╖рдг рдХрднрд░реЗрдЬрдорд╛ рднрд░ рдкрд░реНрдиреБ рдкрд░реНрджреИрди, рдЬреБрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреБрдиреИ рдкрдирд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЕрд╕рдореНрднрд╡ рд╣реБрдиреНрдЫред рдХреЗ рдЧрд▓рдд рдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╣рд╛рдореАрд▓реЗ рд╕реНрдЯреНрдпрд╛рдХ рдЯреНрд░реЗрд╕ рд░рд┐рдкреЛрд░реНрдЯрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдЦрдиреНрдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрдиред
  • рдареВрд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдкрдирд┐, mypy рд▓реЗ рдкреНрд░рд╛рдп: рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдЕрдВрд╢рдорд╛ рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░рдХреЛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдЫред рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рджрд╕реМрдВ рд╕реЗрдХреЗрдиреНрдб рд╡рд╛ рдорд┐рдиреЗрдЯ рдкрдирд┐ рд▓рд╛рдЧреНрдЫред рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд▓рд╛рдИ рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдиреНрдЫ рд░ рдЙрд╕рд▓рд╛рдИ рдЖрдлреНрдиреЛ рдХрд╛рдо рдЫрд┐рдЯреЛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдЙрд╕рд▓реЗ рдЕрдм рдЫрд┐рдЯреЛ рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рдирддрд┐рдЬрд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕реНрдерд╛рд╣рд░реВрд▓рд╛рдИ рдирдХреНрдХрд▓реА рд░ рдкреНрдпрд╛рдЪрд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдХрдордЬреЛрд░ рд░ рдЧрд╛рд╣реНрд░реЛ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред

IDEs рд░ рд╕рдореНрдкрд╛рджрдХрд╣рд░реВ рдЬрд╕реНрддреИ PyCharm рд╡рд╛ рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛ рдХреЛрдбрд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рдкреВрд░реНрдгрддрд╛, рддреНрд░реБрдЯрд┐ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдЩ, рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВрдХреЛ рд╢рдХреНрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рд░ рдпреА рдХреЗрд╡рд▓ рдХреЗрд╣рд┐ рдлрд╛рдЗрджрд╛рд╣рд░реВ рд╣реБрдиреН рдЬреБрди рдЯрд╛рдЗрдкрд┐рдлрд┐рдХреЗрд╢рдирд▓реЗ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдХреЗрд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ рд╕рдмреИ рдЯрд╛рдЗрдкрд┐рдЩрдХреЛ рдкрдХреНрд╖рдорд╛ рдореБрдЦреНрдп рддрд░реНрдХ рд╣реЛред рдпреЛ рддреНрдпрд╕реНрддреЛ рдЪреАрдЬ рд╣реЛ рдЬрд╕рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдЫрд┐ рддреБрд░реБрдиреНрддреИ рдлрд╛рдЗрджрд╛ рд▓реНрдпрд╛рдЙрдБрдЫред рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдкреНрд░рдпреЛрдЧ рдХреЗрд╕рд▓рд╛рдИ mypy рдЬрд╕реНрддрд╛ рдЫреБрдЯреНрдЯреИ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрди, рдпрджреНрдпрдкрд┐ рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБ рдкрд░реНрдЫ рдХрд┐ mypy рд▓реЗ рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рд░ рдХреЛрдбрд╣рд░реВ рдмреАрдЪ рд╕реНрдерд┐рд░рддрд╛ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред

Mypy рдкреГрд╖реНрдарднреВрдорд┐

Mypy рдХрдерд╛ рдпреБрдХреЗрдорд╛ рд╕реБрд░реБ рднрдпреЛ, рдХреНрдпрд╛рдореНрдмреНрд░рд┐рдЬрдорд╛, рдо рдбреНрд░рдкрдмрдХреНрд╕рдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрдиреБрднрдиреНрджрд╛ рдХреЗрд╣реА рд╡рд░реНрд╖ рдЕрдШрд┐ред рдореЗрд░реЛ рдбреЙрдХреНрдЯрд░реЗрдЯ рдЕрдиреБрд╕рдиреНрдзрд╛рдирдХреЛ рдПрдХ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛, рдореИрд▓реЗ рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рдЯрд╛рдЗрдк рдЧрд░рд┐рдПрдХреЛ рд░ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛рд╣рд░реВрд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ рдореБрджреНрджрд╛рдорд╛ рдХрд╛рдо рдЧрд░реЗрдВред рдо рдЬреЗрд░реЗрдореА Siek рд░ Walid Tah рджреНрд╡рд╛рд░рд╛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдЩрдХреЛ рдмрд╛рд░реЗрдорд╛ рд▓реЗрдЦ, рд╕рд╛рдереИ рдЯрд╛рдЗрдк рдЧрд░рд┐рдПрдХреЛ рд░реИрдХреЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдмрд╛рдЯ рдкреНрд░реЗрд░рд┐рдд рднрдПрдХреЛ рдерд┐рдПрдБред рдореИрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯреИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЦреЛрдЬреНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдВ - рд╕рд╛рдирд╛ рд▓рд┐рдкрд┐рд╣рд░реВрджреЗрдЦрд┐ рдХреЛрдбрдмреЗрд╕рд╣рд░реВрдорд╛ рд▓рд╛рдЦреМрдВ рд▓рд╛рдЗрдирд╣рд░реВ рд╕рдореНрдорд┐рд▓рд┐рддред рдПрдХреИ рд╕рдордпрдорд╛, рдо рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЪрд╛рд╣рд╛рдиреНрдЫреБ рдХрд┐ рдХреБрдиреИ рдкрдирд┐ рд╕реНрдХреЗрд▓рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛтАЛтАЛрдореИрд▓реЗ рдзреЗрд░реИ рд╕рдореНрдЭреМрддрд╛рд╣рд░реВ рдЧрд░реНрдиреБрдкрд░реНрджреИрдиред рдпреА рд╕рдмреИрдХреЛ рдПрдЙрдЯрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдПрдХ рдЯрд╛рдЗрдк рдирдЧрд░рд┐рдПрдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯрдмрд╛рдЯ рдмрд┐рд╕реНрддрд╛рд░реИ рд╡реНрдпрд╛рдкрдХ рд░реВрдкрдорд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ, рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рдЯрд╛рдЗрдк рдЧрд░рд┐рдПрдХреЛ рдЙрддреНрдкрд╛рджрдирдорд╛ рд╕рд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдерд┐рдпреЛред рдпреА рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдзреЗрд░реИ рд╣рджрд╕рдореНрдо рдЖрдЬрдХрд╛ рджрд┐рдирд╣рд░реВрдорд╛ рд▓рд┐рдПрдХрд╛ рдЫрдиреН, рддрд░ 2010 рдорд╛ рдпреЛ рдПрдХ рдореБрджреНрджрд╛ рдерд┐рдпреЛ рдЬреБрди рдЕрдЭреИ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рднрдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛред

рдЯрд╛рдЗрдк рдЬрд╛рдБрдЪрдорд╛ рдореЗрд░реЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдХрд╛рдо рдкрд╛рдЗрдердирдорд╛ рд▓рдХреНрд╖рд┐рдд рдерд┐рдПрдиред рдмрд░реБ рдореИрд▓реЗ рд╕рд╛рдиреЛ "рдШрд░реЗрд▓реБ" рднрд╛рд╖рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВ рдЕрд▓реЛрд░ред рд╣рд╛рдореА рдХреЗ рдХреБрд░рд╛ рдЧрд░реНрджреИрдЫреМрдВ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрдХ рд╡рд┐рдЪрд╛рд░ рджрд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдЫ (рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рдРрдЪреНрдЫрд┐рдХ рдЫрдиреН):

def Fib(n as Int) as Int
  if n <= 1
    return n
  else
    return Fib(n - 1) + Fib(n - 2)
  end
end

рддрдкрд╛рдИрдХреЛ рдЖрдлреНрдиреИ рдбрд┐рдЬрд╛рдЗрдирдХреЛ рд╕рд░рд▓ рднрд╛рд╖рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЕрдиреБрд╕рдиреНрдзрд╛рдирдорд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛред рдпреЛ рддреНрдпрд╕реЛ рд╣реЛ, рдХрдореНрддрд┐рдорд╛ рдкрдирд┐ рдпреЛ рд╣реЛрдЗрди рдХрд┐ рдпрд╕рд▓реЗ рдЪрд╛рдБрдбреИ рдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫ, рд░ рдЕрдиреБрд╕рдиреНрдзрд╛рдирд╕рдБрдЧ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдирднрдПрдХреЛ рдХреБрд░рд╛рд▓рд╛рдИ рд╕рдЬрд┐рд▓реИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рдЬреАрд╡рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд╛ рд╕рд╛рде рдареВрд▓реЛ рдорд╛рддреНрд░рд╛рдорд╛ рдШрдЯрдирд╛рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рдЬрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдврд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫред рдпрджреНрдпрдкрд┐, рд╕рд░рд▓реАрдХреГрдд рднрд╛рд╖рд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдХреБрдиреИ рдкрдирд┐ рдирддрд┐рдЬрд╛рд╣рд░реВ рдереЛрд░реИ рд╢рдВрдХрд╛рд╕реНрдкрдж рдЫрдиреН, рдХрд┐рдирдХрд┐ рдпреА рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрд╛ рдЕрдиреБрд╕рдиреНрдзрд╛рдирдХрд░реНрддрд╛рд▓реЗ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рддреНрдпрд╛рдЧ рдЧрд░реЗрдХреЛ рд╣реБрди рд╕рдХреНрдЫред

Alore рдХреЛ рд▓рд╛рдЧрд┐ рдореЗрд░реЛ рдЯрд╛рдЗрдк рдкрд░реАрдХреНрд╖рдХ рдзреЗрд░реИ рдЖрд╢рд╛рдЬрдирдХ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ, рддрд░ рдо рдпрд╕рд▓рд╛рдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереЗ рдЬреБрди рд╡рд╛рд╕реНрддрд╡рдорд╛ Alore рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдерд┐рдПрдиред рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐ рдореЗрд░реЛ рд▓рд╛рдЧрд┐, Alore рднрд╛рд╖рд╛ рдзреЗрд░реИ рд╣рджрд╕рдореНрдо рдкрд╛рдЗрдерди рдЬрд╕реНрддреИ рд╡рд┐рдЪрд╛рд░рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдерд┐рдпреЛред рдЯрд╛рдЗрдк рдкрд░реАрдХреНрд╖рдХрд▓рд╛рдИ рдкреБрди: рдбрд┐рдЬрд╛рдЗрди рдЧрд░реНрди рдпреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдЬрд┐рд▓реЛ рдерд┐рдпреЛ рддрд╛рдХрд┐ рдпрд╕рд▓реЗ рдкрд╛рдЗрдерди рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рд░ рд╕рд┐рдорд╛рдиреНрдЯрд┐рдХреНрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд╛рдЗрдерди рдХреЛрдбрдорд╛ рдЯрд╛рдЗрдк рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛред рдореИрд▓реЗ Alore рдХреЛрдбрд▓рд╛рдИ рдкрд╛рдЗрдерди рдХреЛрдбрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЯреНрд░рд╛рдиреНрд╕рдкрд╛рдЗрд▓рд░ рдкрдирд┐ рд▓реЗрдЦреЗрдВ рд░ рдпрд╕рд▓рд╛рдИ рдореЗрд░реЛ рдЯрд╛рдЗрдк рдЪреЗрдХрд░ рдХреЛрдб рдЕрдиреБрд╡рд╛рдж рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВред рдЕрдм рдорд╕рдБрдЧ рдкрд╛рдЗрдердирдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдгрд╛рд▓реА рдерд┐рдпреЛ рдЬрд╕рд▓реЗ рдкрд╛рдЗрдердирдХреЛ рдЙрдкрд╕реЗрдЯрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рддреНрдпреЛ рднрд╛рд╖рд╛рдХреЛ рдХреЗрд╣реА рднрд┐рдиреНрдирддрд╛! (рдХреЗрд╣реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдирд┐рд░реНрдгрдпрд╣рд░реВ рдЬрд╕рд▓реЗ рдЕрд▓реЛрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдердкреВрд░реНрдг рдмрдирд╛рдпреЛ рдкрд╛рдЗрдердирдХрд╛ рд▓рд╛рдЧрд┐ рдХрдордЬреЛрд░ рдЙрдкрдпреБрдХреНрдд рдерд┐рдпреЛ; рдпреЛ рдЕрдЭреИ рдкрдирд┐ mypy codebase рдХреЛ рдХреЗрд╣рд┐ рднрд╛рдЧрд╣рд░реВрдорд╛ рд╕реНрдкрд╖реНрдЯ рдЫред)

рд╡рд╛рд╕реНрддрд╡рдорд╛, рдореЗрд░реЛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рд▓рд╛рдИ рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛ рдкрд╛рдЗрдерди рднрдиреНрди рд╕рдХрд┐рдБрджреИрди: рдпреЛ рдкрд╛рдЗрдерди 3 рдХреЛ рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕рдХреЛ рдХреЗрд╣реА рд╕реАрдорд╛рд╣рд░реВрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдкрд╛рдЗрдердирдХреЛ рднрд┐рдиреНрдирддрд╛ рдерд┐рдпреЛред

рдпреЛ рдЬрд╛рднрд╛ рд░ рдкрд╛рдЗрдердирдХреЛ рдорд┐рд╢реНрд░рдг рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ:

int fib(int n):
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

рддреНрдпрд╕ рд╕рдордпрдорд╛ рдореЗрд░реЛ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдерд┐рдпреЛ рдкрд╛рдЗрдердирдХреЛ рдпрд╕ рд╕реНрд╡рд╛рджрд▓рд╛рдИ C рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реЗрд░ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ, рд╡рд╛ рд╕рд╛рдпрдж JVM рдмрд╛рдЗрдЯрдХреЛрдбрдорд╛ред рдо рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрдореНрдкрд╛рдЗрд▓рд░ рд▓реЗрдЦреНрдиреЗ рдЪрд░рдгрдорд╛ рдкреБрдЧреЗрдВ, рддрд░ рдпреЛ рд╡рд┐рдЪрд╛рд░ рддреНрдпрд╛рдЧреЗрдВ рдХрд┐рдирднрдиреЗ рдЯрд╛рдЗрдк рдЬрд╛рдБрдЪ рдЖрдлреИрдВрдорд╛ рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рджреЗрдЦрд┐рдиреНрдЫред

рдореИрд▓реЗ рд╕рд╛рдиреНрддрд╛ рдХреНрд▓рд╛рд░рд╛рдХреЛ PyCon 2013 рдорд╛ рдореЗрд░реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реЗрдВред рдореИрд▓реЗ рдЬреАрд╡рдирдХрд╛ рд▓рд╛рдЧрд┐ рдкрд╛рдЗрдердирдХреЛ рдкрд░реЛрдкрдХрд╛рд░реА рддрд╛рдирд╛рд╢рд╛рд╣ рдЧреБрдЗрдбреЛ рднреНрдпрд╛рди рд░реЛрд╕рдорд╕рдБрдЧ рдкрдирд┐ рдпрд╕рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реЗрдХреЛ рдЫреБред рдЙрд╕рд▓реЗ рдорд▓рд╛рдИ рдореЗрд░реЛ рдХрд╕реНрдЯрдо рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рдЫреЛрдбреНрди рд░ рдорд╛рдирдХ рдкрд╛рдЗрдерди 3 рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕рд╕рдБрдЧ рдЯрд╛рдБрд╕рд┐рдиреЗ рдХреБрд░рд╛рдорд╛ рд╡рд┐рд╢реНрд╡рд╕реНрдд рддреБрд▓реНрдпрд╛рдпреЛред рдкрд╛рдЗрдерди 3 рд▓реЗ рдкреНрд░рдХрд╛рд░реНрдп рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рддреНрдпрд╕реИрд▓реЗ рдореЗрд░реЛ рдЙрджрд╛рд╣рд░рдгрд▓рд╛рдИ рддрд▓рдХреЛ рд░реВрдкрдорд╛ рдкреБрди: рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдЗрдерди рдХрд╛рд░реНрдпрдХреНрд░рдо:

def fib(n: int) -> int:
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

рдореИрд▓реЗ рдХреЗрд╣реА рд╕рдореНрдЭреМрддрд╛рд╣рд░реВ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ (рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдо рдпреЛ рдХреБрд░рд╛ рдФрдВрд▓реНрдпрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рдпрд╣реА рдХрд╛рд░рдгрд▓реЗ рдореИрд▓реЗ рдЖрдлреНрдиреИ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рдХреЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░реЗрдВ)ред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдкрд╛рдЗрдерди рей.рей, рддреНрдпрд╕ рд╕рдордпрдорд╛ рднрд╛рд╖рд╛рдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рднрд░реНрдЦрд░рдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд▓реЗ рдЪрд░ рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрдиред рдореИрд▓реЗ рдЗрдореЗрд▓ рдорд╛рд░реНрдлрдд Guido рд╕рдБрдЧ рддреНрдпрд╕реНрддрд╛ рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрдЯрд┐рдХ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрд▓рдлрд▓ рдЧрд░реЗрдВред рд╣рд╛рдореАрд▓реЗ рдЪрд░рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдХрд╛рд░ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдпреМрдВред рдпрд╕рд▓реЗ рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдЧрд░реНтАНрдпреЛ, рддрд░ рдереЛрд░реИ рдмреЛрдЭрд┐рд▓реЛ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ (рдкрд╛рдЗрдерди рей.рем рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд░рд╛рдореНрд░реЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рджрд┐рдпреЛ):

products = []  # type: List[str]  # Eww

рдкрд╛рдЗрдерди реи рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЯрд╛рдЗрдк рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ рдкрдирд┐ рдЙрдкрдпреЛрдЧреА рдЫрдиреН, рдЬрд╕рдорд╛ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрдорд┐рдд рд╕рдорд░реНрдерди рдЫреИрди:

f fib(n):
    # type: (int) -> int
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

рдпрд╕рд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреЛ рдХрд┐ рдпреА (рд░ рдЕрдиреНрдп) рд╕рдореНрдЭреМрддрд╛рд╣рд░реВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдлрд░рдХ рдкрд╛рд░реНрджреИрдирдиреН - рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩрдХрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВрдХреЛ рдЕрд░реНрде рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЪрд╛рдБрдбреИ рдХрдо-рд╕рд╣реА рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрд┐рд░реНрд╕рдиреНрдЫрдиреНред рдкрд╛рдЗрдерди рдХреЛрдб рдЬрд╕рд▓реЗ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рдХрд╛рд░рд╣рд░реВ рдЕрдм рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрди, рдЕрд╡рд╕реНрдерд┐рдд рдкрд╛рдЗрдерди рдЙрдкрдХрд░рдгрд╣рд░реВ рд░ рдХреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреЗ, рдпрд╕рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдирдпрд╛рдБ рдЙрдкрдХрд░рдг рд╕рд┐рдХреНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдпреЛред

рдореИрд▓реЗ рдореЗрд░реЛ рд╕рд┐рдирд┐рдпрд░ рдереЗрд╕рд┐рд╕ рдкреВрд░рд╛ рдЧрд░реЗрдкрдЫрд┐ рдЧреБрдЗрдбреЛрд▓реЗ рдорд▓рд╛рдИ рдбреНрд░рдкрдмрдХреНрд╕рдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрди рдкрдирд┐ рдордирд╛рдЙрдиреБрднрдпреЛред Mypy рдХреЛ рдЗрддрд┐рд╣рд╛рд╕рдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рд░реЛрдЪрдХ рдХреБрд░рд╛ рдпрд╣реАрдБрдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреНрдЫред

рдлреЗрд░рд┐ рдЬрд╛рд░реА рд░рд╛рдЦреМрдВрд▓рд╛тАж

рдкреНрд░рд┐рдп рдкрд╛рдардХрд╣рд░реБ! рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкрд╛рдЗрдерди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдХреГрдкрдпрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рддрдкрд╛рдЗрдБрд▓реЗ рдпрд╕ рднрд╛рд╖рд╛рдорд╛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рдорд╛рдкрдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрддрд╛рдЙрдиреБрд╣реЛрд╕реНред

рдкрд╛рдЗрдерди рдХреЛрдбрдХреЛ рек рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдирд╣рд░реВ рдЯрд╛рдЗрдк рдЪреЗрдХ рдЧрд░реНрдиреЗ рдмрд╛рдЯреЛред рднрд╛рдЧ 4
рдкрд╛рдЗрдерди рдХреЛрдбрдХреЛ рек рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдирд╣рд░реВ рдЯрд╛рдЗрдк рдЪреЗрдХ рдЧрд░реНрдиреЗ рдмрд╛рдЯреЛред рднрд╛рдЧ 4

рд╕реНрд░реЛрдд: www.habr.com

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