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

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

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

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

рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдЗрд╕ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд╛рдпрдерди рдХреЛрдб рдореЗрдВ рд╕реНрдЯреЗрдЯрд┐рдХ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдереАред 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 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ.

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

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

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

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

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

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

рдорд╛рдпрдкреА рдХреА рдкреГрд╖реНрдарднреВрдорд┐

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

рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдореЗрдВ рдореЗрд░рд╛ рдореВрд▓ рдХрд╛рд░реНрдп рдкрд╛рдпрдерди рдкрд░ рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдерд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреА рд╕реА "рдШрд░реЗрд▓реВ" рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд▓реМрдбрд╝реЗ. рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рдордЭ рдЬрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдпрд╣рд╛рдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ):

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

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

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛ рдХреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╛рдпрдерди рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ рдкрд╛рдпрдерди 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)

рдореБрдЭреЗ рдХреБрдЫ рд╕рдордЭреМрддреЗ рдХрд░рдиреЗ рдкрдбрд╝реЗ (рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛)ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрд╕ рд╕рдордп рднрд╛рд╖рд╛ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг, рдкрд╛рдпрдерди 3.3, рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЧреБрдЗрдбреЛ рдХреЗ рд╕рд╛рде рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдРрд╕реЗ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреАред рд╣рдордиреЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕рдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╣рдж рддрдХ рдмреЛрдЭрд┐рд▓ рдерд╛ (рдкрд╛рдпрдерди 3.6 рдиреЗ рд╣рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рджрд┐рдпрд╛):

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

рдкрд╛рдпрдерди 2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рднреА рдХрд╛рдо рдореЗрдВ рдЖрдИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ:

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

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

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

рдХреЛ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ ...

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ