рдкрд╛рдпрдерди рдХреЛрдбрдЪреНрдпрд╛ рек рджрд╢рд▓рдХреНрд╖ рдУрд│реА рддрдкрд╛рд╕рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ. рднрд╛рдЧ 4

рдЖрдЬ рдЖрдореНрд╣реА рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдкрд╛рдпрдерди рдХреЛрдбрдЪреНрдпрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рдпрдВрддреНрд░рдгрд╛рд╢реА рдХрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЛ рдпрд╛рд╡рд░реАрд▓ рд╕рд╛рдордЧреНрд░реАрдЪреНрдпрд╛ рднрд╛рд╖рд╛рдВрддрд░рд╛рдЪрд╛ рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧ рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрдгреВрди рджреЗрддреЛ.

рдкрд╛рдпрдерди рдХреЛрдбрдЪреНрдпрд╛ рек рджрд╢рд▓рдХреНрд╖ рдУрд│реА рддрдкрд╛рд╕рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ. рднрд╛рдЧ 4

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

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

тЖТ рджреБрд╕рд░рд╛ рднрд╛рдЧ рд╡рд╛рдЪрд╛

рдЯрд╛рдЗрдк рддрдкрд╛рд╕рдгреЗ рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ?

рдЬрд░ рддреБрдореНрд╣реА рдбрд╛рдпрдиреЕрдорд┐рдХрд▓реА рдЯрд╛рдЗрдк рдХреЗрд▓реЗрд▓рд╛ рдкрд╛рдпрдерди рд╡рд╛рдкрд░рд▓рд╛ рдЕрд╕реЗрд▓, рддрд░ рдЕрд▓реАрдХрдбреЗ рд╕реНрдЯреЕрдЯрд┐рдХ рдЯрд╛рдпрдкрд┐рдВрдЧ рдЖрдгрд┐ рдорд╛рдпрдкреА рдмрджреНрджрд▓ рдПрд╡рдврд╛ рдЧрдбрдмрдб рдХрд╛ рдЭрд╛рд▓реА рдЖрд╣реЗ рдпрд╛рдмрджреНрджрд▓ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдЧреЛрдВрдзрд│ рд╣реЛрдК рд╢рдХрддреЛ. рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд╛рдпрдерди рддреНрдпрд╛рдЪреНрдпрд╛ рдбрд╛рдпрдиреЕрдорд┐рдХ рдЯрд╛рдпрдкрд┐рдВрдЧрдореБрд│реЗ рддрдВрддреЛрддрдВрдд рдЖрд╡рдбрдд рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдЬреЗ рдШрдбрдд рдЖрд╣реЗ рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╕реНрд╡рд╕реНрде рдХрд░рддреЗ. рд╕реНрдЯреЕрдЯрд┐рдХ рдЯрд╛рдпрдкрд┐рдВрдЧрдЪреНрдпрд╛ рдореВрд▓реНрдпрд╛рдЪреА рдЧреБрд░реБрдХрд┐рд▓реНрд▓реА рдореНрд╣рдгрдЬреЗ рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕рдЪреЗ рд╕реНрдХреЗрд▓: рддреБрдордЪрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬрд┐рддрдХрд╛ рдореЛрдард╛ рдЕрд╕реЗрд▓ рддрд┐рддрдХрд╛ рддреБрдореНрд╣реА рд╕реНрдЯреЕрдЯрд┐рдХ рдЯрд╛рдпрдкрд┐рдВрдЧрдХрдбреЗ рдЭреБрдХрддрд╛ рдЖрдгрд┐ рд╢реЗрд╡рдЯреА, рддреБрдореНрд╣рд╛рд▓рд╛ рддрд┐рддрдХреА рдЬрд╛рд╕реНрдд рдЧрд░рдЬ рдЕрд╕рддреЗ.

рд╕рдордЬрд╛ рдПрдЦрд╛рджрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд▓реНрдк рд╣рдЬрд╛рд░реЛ рдУрд│реАрдВрдЪреНрдпрд╛ рдЖрдХрд╛рд░рд╛рдд рдкреЛрд╣реЛрдЪрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдЕрдиреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рддреНрдпрд╛рд╡рд░ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗрдд. рдЖрдордЪреНрдпрд╛ рдЕрдиреБрднрд╡рд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ рддрддреНрд╕рдо рдкреНрд░рдХрд▓реНрдк рдкрд╛рд╣рддрд╛, рдЖрдореНрд╣реА рдЕрд╕реЗ рдореНрд╣рдгреВ рд╢рдХрддреЛ рдХреА рддреНрдпрд╛рдЪрд╛ рдХреЛрдб рд╕рдордЬреВрди рдШреЗрдгреЗ рд╣реА рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдЙрддреНрдкрд╛рджрдХ рдареЗрд╡рдгреНрдпрд╛рдЪреА рдЧреБрд░реБрдХрд┐рд▓реНрд▓реА рдЕрд╕реЗрд▓. рдЯрд╛рдИрдк рдПрдиреЛрдЯреЗрд╢рдиреНрд╕рд╢рд┐рд╡рд╛рдп, рд╣реЗ рд╕рдордЬрдгреЗ рдХрдареАрдг рд╣реЛрдК рд╢рдХрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдлрдВрдХреНрд╢рдирд▓рд╛ рдХреЛрдгрддреЗ рд╡рд┐рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рд╛рдпрдЪреЗ рдХрд┐рдВрд╡рд╛ рдлрдВрдХреНрд╢рди рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреЗ рдкрд░рдд рдпреЗрдК рд╢рдХрддреЗ. рдпреЗрдереЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рдЖрд╣реЗрдд рдЬреНрдпрд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рдЯрд╛рдЗрдк рднрд╛рд╖реНрдпреЗ рди рд╡рд╛рдкрд░рддрд╛ рджреЗрдгреЗ рдХрдареАрдг рдЕрд╕рддреЗ:

  • рд╣реЗ рдХрд╛рд░реНрдп рдкрд░рдд рдпреЗрдК рд╢рдХрддреЗ None?
  • рд╣рд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдХрд╛рдп рдЕрд╕рд╛рд╡рд╛? items?
  • рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛рдп рдЖрд╣реЗ id: int рдЦрд░рдЪрдВ, str, рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рдХрд╛рд╣реА рд╕рд╛рдиреБрдХреВрд▓ рдкреНрд░рдХрд╛рд░?
  • рдпрд╛ рдпреБрдХреНрддрд┐рд╡рд╛рджрд╛рдЪреА рдпрд╛рджреА рдЕрд╕рд╛рд╡реА рдХрд╛? рддреЗ рдПрдХ tuple рдкрд╛рд╕ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ рдХрд╛?

рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЯрд╛рдЗрдк-рдПрдиреЛрдЯреЗрдЯреЗрдб рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╕ рдЖрдгрд┐ рддрддреНрд╕рдо рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рджреЗрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓реНрдпрд╛рд╕, рдЕрд╕реЗ рджрд┐рд╕реВрди рдпреЗрддреЗ рдХреА рд╣реЗ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреЗ рдХрд╛рд░реНрдп рдЖрд╣реЗ:

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

  • read_metadata рдкрд░рдд рдпреЗрдд рдирд╛рд╣реА None, рдХрд╛рд░рдг рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдирд╛рд╣реА Optional[тАж].
  • рдпреБрдХреНрддрд┐рд╡рд╛рдж items рдУрд│реАрдВрдЪрд╛ рдХреНрд░рдо рдЖрд╣реЗ. рддреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрдгреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рддрд╛ рдпреЗрдд рдирд╛рд╣реА.
  • рдЧреБрдгрдзрд░реНрдо id рдмрд╛рдЗрдЯреНрд╕рдЪреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрд╣реЗ.

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

рдкрд╛рдпрдерди рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрдЪреНрдпрд╛ рдХрд┐рдВрд╡рд╛ рдордзреНрдпрд╡рд░реНрддреА рдЯрдкреНрдкреНрдпрд╛рдд рдЙрддреНрдХреГрд╖реНрдЯ рдЕрд╕рддрд╛рдирд╛, рдХрд╛рд╣реА рдард┐рдХрд╛рдгреА рдпрд╢рд╕реНрд╡реА рдкреНрд░рдХрд▓реНрдк рдЖрдгрд┐ рдкрд╛рдпрдерди рд╡рд╛рдкрд░рдгрд╛рд▒реНрдпрд╛ рдХрдВрдкрдиреНрдпрд╛рдВрдирд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреВ рд╢рдХрддреЛ: тАЬрдЖрдореНрд╣реА рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕реНрдерд┐рд░рдкрдгреЗ рдЯрд╛рдЗрдк рдХреЗрд▓реЗрд▓реНрдпрд╛ рднрд╛рд╖реЗрдд рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд╛рд╡реЗ рдХрд╛?тАЭ.

mypy рд╕рд╛рд░рдЦреНрдпрд╛ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХрд╛рд╕рдХрд╛рд▓рд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдФрдкрдЪрд╛рд░рд┐рдХ рднрд╛рд╖рд╛ рджреЗрдКрди рд╡рд░реАрд▓ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддрд╛рдд рдЖрдгрд┐ рдкреНрд░рдХрд╛рд░ рдШреЛрд╖рдгрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╢реА рдЬреБрд│рддрд╛рдд рд╣реЗ рддрдкрд╛рд╕реВрди (рдЖрдгрд┐ рдкрд░реНрдпрд╛рдпрд╛рдиреЗ рддреНрдпрд╛рдВрдЪреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рддрдкрд╛рд╕реВрди). рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЖрдореНрд╣реА рдЕрд╕реЗ рдореНрд╣рдгреВ рд╢рдХрддреЛ рдХреА рдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛рд│рдЬреАрдкреВрд░реНрд╡рдХ рддрдкрд╛рд╕рд▓реЗрд▓реНрдпрд╛ рдХрд╛рдЧрджрдкрддреНрд░рд╛рдВрд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рдЖрдордЪреНрдпрд╛ рд╡рд┐рд▓реНрд╣реЗрд╡рд╛рдЯ рд▓рд╛рд╡рддрд╛рдд.

рдЕрд╢рд╛ рдкреНрд░рдгрд╛рд▓реАрдВрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдЪреЗ рдЗрддрд░ рдлрд╛рдпрджреЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреЗ рдЖрдзреАрдЪ рдкреВрд░реНрдгрдкрдгреЗ рдЧреИрд░-рдХреНрд╖реБрд▓реНрд▓рдХ рдЖрд╣реЗрдд:

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

IDEs рдЖрдгрд┐ рд╕рдВрдкрд╛рджрдХ рдЬрд╕реЗ рдХреА PyCharm рдХрд┐рдВрд╡рд╛ Visual Studio Code рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдХреЛрдб рдкреВрд░реНрдг рдХрд░рдгреЗ, рддреНрд░реБрдЯреА рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рднрд╛рд╖рд╛ рд░рдЪрдирд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯрд╛рдИрдк рдПрдиреЛрдЯреЗрд╢рдирдЪреА рд╢рдХреНрддреА рд╡рд╛рдкрд░рддрд╛рдд. рдЖрдгрд┐ рд╣реЗ рдлрдХреНрдд рдЯрд╛рдпрдкрд┐рдВрдЧрдЪреЗ рдХрд╛рд╣реА рдлрд╛рдпрджреЗ рдЖрд╣реЗрдд. рдХрд╛рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╕рд╛рдареА, рд╣реЗ рд╕рд░реНрд╡ рдЯрд╛рдпрдкрд┐рдВрдЧрдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдореБрдЦреНрдп рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЖрд╣реЗ. рд╣реА рдЕрд╢реА рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ рдЬреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рд▓рдЧреЗрдЪрдЪ рдлрд╛рдпрджрд╛ рд╣реЛрддреЛ. рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рдпрд╛ рд╡рд╛рдкрд░ рдкреНрд░рдХрд░рдгрд╛рд╕рд╛рдареА 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 bytecode рд╕рдВрдХрд▓рд┐рдд рдХрд░реВрди рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рдгреНрдпрд╛рд╕рд╛рдареА рдЯрд╛рдЗрдк рднрд╛рд╖реНрдпреЗ рд╡рд╛рдкрд░рдгреЗ. рдореА рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдкреЛрд╣реЛрдЪрд▓реЛ, рдкрд░рдВрддреБ рдореА рд╣реА рдХрд▓реНрдкрдирд╛ рд╕реЛрдбреВрди рджрд┐рд▓реА, рдХрд╛рд░рдг рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рд╕реНрд╡рддрдГрдЪ рдЦреВрдк рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯрд▓реЗ.

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

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

рдорд▓рд╛ рдХрд╛рд╣реА рддрдбрдЬреЛрдб рдХрд░рд╛рд╡реА рд▓рд╛рдЧрд▓реА (рд╕рд░реНрд╡рдкреНрд░рдердо, рдорд▓рд╛ рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛рдпрдЪреЗ рдЖрд╣реЗ рдХреА рдореА рдорд╛рдЭреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╡рд╛рдХреНрдпрд░рдЪрдиреЗрдЪрд╛ рд╢реЛрдз рдпрд╛рдЪ рдХрд╛рд░рдгрд╛рд╕рд╛рдареА рд▓рд╛рд╡рд▓рд╛ рдЖрд╣реЗ). рд╡рд┐рд╢реЗрд╖рддрдГ, Python 3.3, рддреНрдпрд╛рд╡реЗрд│рдЪреНрдпрд╛ рднрд╛рд╖реЗрдЪреА рд╕рд░реНрд╡рд╛рдд рдЕрд▓реАрдХрдбреАрд▓ рдЖрд╡реГрддреНрддреА, рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рднрд╛рд╖реНрдпрд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реА. рдЕрд╢рд╛ рднрд╛рд╖реНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рд┐рдВрдЯреЕрдХреНрдЯрд┐рдХ рдбрд┐рдЭрд╛рдЗрдирд╕рд╛рдареА рдореА рдИ-рдореЗрд▓рджреНрд╡рд╛рд░реЗ Guido рд╢реА рдЪрд░реНрдЪрд╛ рдХреЗрд▓реА. рдЖрдореНрд╣реА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╛рдареА рдЯрд╛рдИрдк рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ. рдпрд╛рдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢ рдкреВрд░реНрдг рдХреЗрд▓рд╛, рдкрд░рдВрддреБ рдХрд╛рд╣реАрд╕рд╛ рддреНрд░рд╛рд╕рджрд╛рдпрдХ рд╣реЛрддрд╛ (рдкрд╛рдпрдерди рей.рем рдиреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдЫрд╛рди рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рджрд┐рд▓реА):

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

Python 2 рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЯрд╛рдЗрдк рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рджреЗрдЦреАрд▓ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗрдд, рдЬреНрдпрд╛рдд рдЯрд╛рдЗрдк рднрд╛рд╖реНрдпрд╛рдВрд╕рд╛рдареА рдЕрдВрдЧрднреВрдд рд╕рдорд░реНрдерди рдирд╛рд╣реА:

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

рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдпрд╛ (рдЖрдгрд┐ рдЗрддрд░) рдЯреНрд░реЗрдб-рдСрдлрдиреЗ рдЦрд░реЛрдЦрд░ рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА - рд╕реНрдерд┐рд░ рдЯрд╛рдпрдкрд┐рдВрдЧрдЪреНрдпрд╛ рдлрд╛рдпрджреНрдпрд╛рдВрдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рд╣реЛрддреЛ рдХреА рд╡рд╛рдкрд░рдХрд░реНрддреЗ рд▓рд╡рдХрд░рдЪ рдХрдореА-рдкрд░рд┐рдкреВрд░реНрдг рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рд╡рд┐рд╕рд░рд▓реЗ. рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкрд╛рдпрдерди рдХреЛрдбрдордзреНрдпреЗ рдХреЛрдгрддреАрд╣реА рд╡рд┐рд╢реЗрд╖ рд╕рд┐рдВрдЯреЕрдХреНрдЯрд┐рдХ рд░рдЪрдирд╛ рд╡рд╛рдкрд░рд▓реА рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рд╡рд┐рджреНрдпрдорд╛рди рдкрд╛рдпрдерди рдЯреВрд▓реНрд╕ рдЖрдгрд┐ рдХреЛрдб рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдпрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рдд рд░рд╛рд╣рд┐рд▓реНрдпрд╛, рдЬреНрдпрд╛рдореБрд│реЗ рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рдирд╡реАрди рдЯреВрд▓ рд╢рд┐рдХрдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рд╣реЛрддреЗ.

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

рдкреБрдвреЗ рдЪрд╛рд▓реВтАж

рдкреНрд░рд┐рдп рд╡рд╛рдЪрдХ! рддреБрдореНрд╣реА Python рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреГрдкрдпрд╛ рдпрд╛ рднрд╛рд╖реЗрдд рддреБрдореНрд╣реА рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреНрдпрд╛ рд╕реНрдХреЗрд▓рдмрджреНрджрд▓ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧрд╛.

рдкрд╛рдпрдерди рдХреЛрдбрдЪреНрдпрд╛ рек рджрд╢рд▓рдХреНрд╖ рдУрд│реА рддрдкрд╛рд╕рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ. рднрд╛рдЧ 4
рдкрд╛рдпрдерди рдХреЛрдбрдЪреНрдпрд╛ рек рджрд╢рд▓рдХреНрд╖ рдУрд│реА рддрдкрд╛рд╕рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ. рднрд╛рдЧ 4

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

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