рд╕рднреА рд╣реЗрдмреНрд░рдЪ рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ deja vu рдХреА рднрд╛рд╡рдирд╛ рд╣реИ: рдореБрдЭреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ "рдкрд╛рдпрдерди рдХрд╛ рдкрд░рд┐рдЪрдп" рдФрд░ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ "рдкрд░рд┐рдЪрдп" рдЕрд╣рдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ ... рдЪрд▓реЛ рдЙрджрд╛рд╕ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди "рд╕реА ++ рдкрд╛рдпрдерди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рд╣реИ" рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдХреНрд╡реИрдмрд▓реНрд╕ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рднреА рджреБрдЦрдж рдерд╛, "рд░рд╕реНрдЯ рд╕реА ++ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднреА рддреЗрдЬ рд╣реИ", "рдкрд╛рдпрдерди рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ", рдЖрджрд┐ред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд░реВрдмреА рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛!
рдЬреИрд╕рд╛ рдХрд┐ рдмрдЬрд░рди рд╕реНрдЯреНрд░реЙрд╕реНрдЯреНрд░рдк рдиреЗ рдХрд╣рд╛,
"рдХреЗрд╡рд▓ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВ: рд╡реЗ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдЧ рд╣рд░ рд╕рдордп рд╢рдкрде рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред"
рдЧрдВрджреЗ рд╢рд╛рдк рдХреЗ рд▓рд┐рдП рдЧрд┐рд░рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдкрд╛рдЗрдерди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рдкреВрд░реНрд╡реА рдХрд╛рдХреЗрд╢рд╕ рдХреЗ рдкрд╣рд╛рдбрд╝реЛрдВ рдореЗрдВ рд╕реБрдмрд╣ рд░реЛрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреЛ рдпреБрд╡рд╛ рд▓реЛрдЧ рдПрдХ рдмрдбрд╝реЗ рд╢рд┐рд▓рд╛рдЦрдВрдб рдкрд░ рдмреИрдареЗ рдФрд░ рдЬреЛрд░рджрд╛рд░ рдврдВрдЧ рд╕реЗ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рдХреА, рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ред рдПрдХ рдорд┐рдирдЯ рдмрд╛рдж, рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рд▓рдЧреЗ, рдФрд░ рдлрд┐рд░ рдПрдХ рдмреЛрд▓реНрдбрд░ рд╕реЗ рдЧрд┐рд░ рдЧрдпрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛) рдПрдХ рд╢реБрджреНрдз рдЭрд╛рдбрд╝реАред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рдЭрд╛рдбрд╝реА рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдБ рдмрдврд╝реА, - рдЙрдиреНрд╣реЛрдВрдиреЗ рддреБрд░рдВрдд рд╡рд┐рд╡рд╛рдж рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рд╢рд╛рдВрдд рдХрд┐рдпрд╛ рдФрд░ рдЙрдирдХреЗ рд╡рд┐рд╡рд╛рджрд┐рдд рд╡рд┐рд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд▓рд╛рдпрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдореИрдВ рдПрдХ рдмрд╣рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдерд╛, рджреВрд╕рд░рд╛ рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреЛрд╕реНрдд рдерд╛ (рд╣реИрд▓реЛ, рдХреНрд╡реЗрдХрд░_ рдЯреА!), рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдЫреЛрдЯреА рд╕реА рдмрд╛рдд рдХрд╛ рд╡рд┐рд╖рдп рд╡рд┐рдЬреБрдЕрд▓ рдмреЗрд╕рд┐рдХ рдмрдирд╛рдо рдерд╛ ред рдбреЗрд▓реНрдлреА !
рдХреНрдпрд╛ рдЖрдк рдЦреБрдж рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ? рдХрднреА-рдХрднреА рд╣рдо рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдПрдХ рдкрдВрде рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ! рд▓реЗрдХрд┐рди рд╕рд╛рд▓ рдмреАрдд рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣ рдкрд▓ рдЖрддрд╛ рд╣реИ рдЬрдм рд╡рд┐рд╡рд╛рджреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ "рдП рдмрдирд╛рдо рдмреА" рдП рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореИрдВ рд╕реАрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдмреА, рд╕реА, рдбреА, рдИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдХреБрдЫ рднреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ ред " рдЬрдм рд╣рдо рдирдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдкреБрд░рд╛рдиреА рдЖрджрддреЗрдВ рдФрд░ рд╕рдВрд╕реНрдХреГрддрд┐ рд╣рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВред
рдореИрдВ рдЖрдкрдХреЛ рдкрд╛рдпрдерди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдПрдХ рдирдИ рджрд┐рд╢рд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХрд┐рд╕реА рднреА рддрдХрдиреАрдХ рдХреА рддрд░рд╣, рдЗрд╕рдХреА рдЕрдкрдиреА рддрд╛рдХрдд рдФрд░ рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдЕрдЬрдЧрд░, рдЬреИрд╕реЗ C ++, Rust, Ruby, JS рдФрд░ рдмрд╛рдХреА рд╕рдм, рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рдирд┐рд░реНрджреЗрд╢ рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
"рд▓реЗрдЦрдХ, рдХреЛрдИ рджрд┐рдорд╛рдЧ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдкрд╛рдпрдерди рд╕реЗ рдорд┐рд▓рд╡рд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ?" рдЪрд▓реЛ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рдУ!
рдкрд╛рдпрдерди рдПрдХ рдЧрддрд┐рд╢реАрд▓, рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╕рд╛рдорд╛рдиреНрдп-рдкреНрд░рдпреЛрдЬрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИред рдкрд╛рдпрдерди рдПрдХ рдкрд░рд┐рдкрдХреНрд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдореГрджреНрдз рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдФрд░ рдкрд░рдВрдкрд░рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ 1991 рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рд╣реБрдИ рдереА, рд▓реЗрдХрд┐рди 2000 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕рдХрд╛ рдЖрдзреБрдирд┐рдХ рд╕реНрд╡рд░реВрдк рдЖрдХрд╛рд░ рд▓реЗрдиреЗ рд▓рдЧрд╛ред рдкрд╛рдпрдерди рдПрдХ рдЖрд╡реЗрд╢рд┐рдд рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕рдХреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрдИ рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдкрд╛рдпрдерди рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ: рдбреНрд░реЙрдкрдмреЙрдХреНрд╕, рд░реЗрдбрд┐рдЯ, рдЗрдВрд╕реНрдЯрд╛рдЧреНрд░рд╛рдо, рдбрд┐рд╕реНрдХрд╕, рдпреВрдЯреНрдпреВрдм, рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕, рд▓рд╛рдирдд рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдИрд╡ рдСрдирд▓рд╛рдЗрди рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ? рдЖрдкрдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ, рдореИрдВ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВрдЧрд╛ред
рдкрд╛рдпрдерди рдПрдХ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИред рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧред рдХрдЪрд░рд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ред рдЙрдЪреНрдЪрддрд░ рдХрд╛рд░реНрдпред рд╢рдмреНрджрдХреЛрд╢реЛрдВ, рд╕реЗрдЯреЛрдВ, рдЯреБрдкрд▓реНрд╕ рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ (рд╕реНрд▓рд╛рдЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд┐рдд) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ред рдкрд╛рдпрдерди рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рд╣реИ: рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдзреАрд░реЗ-рдзреАрд░реЗ рдУрдУрдкреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рд╕реНрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рджрдЧреА рдПрдХ рд╣рд┐рдордЦрдВрдб рдХреА рдиреЛрдХ рдХреА рддрд░рд╣ рд╣реИред рдЬрдм рдЖрдк рдЕрдЬрдЧрд░ рдХреЗ рджрд░реНрд╢рди - рдЬрд╝реЗрди рдСрдлрд╝ рдкрд╛рдпрдерди рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЧрд╣рд░рд╛рдИ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЖрдЧреЗ рднреА рдбрд╛рдЗрд╡рд┐рдВрдЧ - рдФрд░ рдЖрдк рдЦреБрдж рдХреЛ рдХреЛрдб рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ - рдкрд╛рдпрдерди рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб ред рдбрд╛рдЗрд╡рд┐рдВрдЧ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдзреАрд░реЗ-рдзреАрд░реЗ "рдкрд╛рдпрдерди рддрд░реАрдХрд╛" рдпрд╛ "рдкрд╛рдпрдереЛрдирд┐рдХ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рднрд╛рд╖рд╛ рд╕реАрдЦрдиреЗ рдХреЗ рдЗрд╕ рдЕрджреНрднреБрдд рдЪрд░рдг рдореЗрдВ, рдЖрдк рдпрд╣ рд╕рдордЭрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреНрдпреЛрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВред рднрд╛рд╖рд╛ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХреНрдпреЛрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ рдирд╣реАрдВред рдЕрдЬрдЧрд░ рдЧрддрд┐ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред рд▓реЗрдХрд┐рди рд╡рд╣ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ - рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕рдлрд▓ рд░рд╣рд╛ред "рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦреЗрдВ, рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ" - рдпрд╣ рдкрд╛рдпрдерди рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред
рдЕрдЪреНрдЫрд╛ рдкрд╛рдпрдерди рдХреЛрдб рд╕реБрдВрджрд░ рджрд┐рдЦрддрд╛ рд╣реИред рдФрд░ рд╕реБрдВрджрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП - рдПрдХ рд╕реБрдЦрдж рд╡реНрдпрд╡рд╕рд╛рдп рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ?
рдЯрд┐рдк 0: рдЖрдЧреЗ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреГрдкрдпрд╛ рдЬрд╝реЗрди рдкрд╛рдпрдерди рдХреЙрд░реНрдирд░ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рднрд╛рд╖рд╛ рдЗрди рдкрджреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЙрдирд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреЗ рддреЛ рд╣рдорд╛рд░рд╛ рд╕рдВрдЪрд╛рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рдЪрд╛рд▓рд╛рдХ рдЖрджрдореА рдЦрд░реЛрдЬ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛?
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдЭрдЯрдХрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрднреА рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрдб рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╢рд░реАрд░ рдХрд╛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╣реИ:
def main(): ins = input('Please say something') for w in ins.split(' '): if w == 'hello': print('world!')
рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдкреЙрд▓рд┐рдЯреЗрдХреНрдирд┐рдХ рдХреЗ рд╣реЙрд╕реНрдЯрд▓ рдореЗрдВ рд╢рд╛рдо рдЬрдм рдореЗрд░реЗ рдкрдбрд╝реЛрд╕реА рд╡реАрдПрд▓рдХреЗ рдиреЗ рдЬрд▓рддреА рдЖрдБрдЦреЛрдВ рд╕реЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдЙрд╕рдиреЗ рдкрд╛рдпрдерди рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рдЦреЛрдЬрд╛ рдерд╛ред "рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдмреЙрдбреА? рдЧрдВрднреАрд░рддрд╛ рд╕реЗ?" - рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереАред рджрд░рдЕрд╕рд▓, рд╡рд┐рдЬреБрдЕрд▓ рдмреЗрд╕рд┐рдХ ( if ... end if
) рд╕реЗ C (C) рдФрд░ C рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝) рдкрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдЗрд╕реЗ рд╣рд▓реНрдХрд╛, рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред "рдХреНрдпрд╛ рдЖрдк рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХреЛрдб рдлреЙрд░реНрдореЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?" рдмреЗрд╢рдХ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рд╕рд░реНрдкрд┐рд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред рдЙрд╕рдиреЗ рдЕрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдФрд░ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ - рд╡реЗ рдЦреБрдж рд╕реЗ рдХреЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдП рдФрд░ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд▓рдЧ рд░рд╣реЗ рдереЗред рд▓реЗрдХрд┐рди рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛ - рдХреЛрдб рдХреЛ рд╣рдореЗрд╢рд╛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред "рдлрд┐рд░ рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╢рд░реАрд░ рдХреЛ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?"
рдЙрд╕ рд░рд╛рдд рдореИрдВ рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рдмреИрда рдЧрдпрд╛ред рдкреАрдЫреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдирдИ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рдорджрдж рдорд┐рд▓реАред рдпрд╣ рдПрдХ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдерд╛ред рдЙрд╕реА рд╡реАрдПрд▓рдХреЗ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рддрд╣рдд, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рд╕реЗ рдЙрдмрдВрдЯреВ рдФрд░ рдПрдорд╛рдХреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ (2007 рдХреЗ рдЖрдВрдЧрди рдореЗрдВ, Pyharm, рдПрдЯрдо, рд╡реАрдПрд╕ рдХреЛрдб рдФрд░ рдЕрдиреНрдп - рдХрдИ рдФрд░ рд╡рд░реНрд╖реЛрдВ рддрдХ)ред "рдареАрдХ рд╣реИ, рдЕрдм Emacs PR рд╣реЛрдЧрд╛ ..." - рдЖрдк рдХрд╣рддреЗ рд╣реИрдВред рдмрд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ :) рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, Emacs рдореЗрдВ <tab>
рдХреБрдВрдЬреА <tab>
рдирд╣реАрдВ рдЬреЛрдбрд╝рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореЛрдб рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЗрди рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред рджрдмрд╛рдпрд╛ рдЧрдпрд╛ <tab>
- рдФрд░ рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐ рдХреЛ рдЕрдЧрд▓реЗ рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ рдпрд╣ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдЯрд┐рдк 1: рдЬрдм рдЖрдк рдкрд╛рдпрдерди рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рд╛рд░реЗ рдЕрдкрдорд╛рди рдХрд╛ рдХреНрдпрд╛ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИ? рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд▓рдВрдмреЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЖрдХрд╛рд░ рд╕реНрдХреНрд░реАрди рдХреА рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рднреЗрдж рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рджрд┐рдП рдЧрдП рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЛ рдХрд┐рд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдирд╛ рд╣реИред рдФрд░ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдирд┐рд╡реЗрд╢, рдЙрддрдирд╛ рд╣реА рдХрдард┐рдиред рдирддреАрдЬрддрди, рдЖрдк рдпрдерд╛рд╕рдВрднрд╡ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди, рд▓реВрдк, рд╕рд╢рд░реНрдд рд╕рдВрдХреНрд░рдордг рдЖрджрд┐ рдХреЗ рд▓рдВрдмреЗ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рддреЛрдбрд╝рддреЗ рд╣реИрдВред
рдУрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ
рд╣реЗ, рдЬрдм рддрдХ "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореМрдЬреВрдж рд╣реИ, рддрдм рддрдХ рдпрд╣ рдЪрд░реНрдЪрд╛ рд▓рдЧрднрдЧ рдореМрдЬреВрдж рд╣реИ! рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рди рддреЛ рдЦрд░рд╛рдм рд╣реИ рдФрд░ рди рд╣реА рдЕрдЪреНрдЫреА рд╣реИред рдбрд╛рдпрдирд╛рдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рднреА рд╣рдорд╛рд░рд╛ рдЯреВрд▓ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ, рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрдмрд░рджрд╕реНрдд рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрд╣рд╛рдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣реИ - рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рдЦреНрдд рд╣реИ рдФрд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
1 + '1' >>> TypeError: unsupported operand type(s) for +: 'int' and 'str'
рдкрд╛рдпрдерди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреА рдЬрд╛рдВрдЪ рднреА рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛:
def sum(x, y): return x + y sum(10, 20, 30) >>> TypeError: sum() takes 2 positional arguments but 3 were given
рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдкрд╛рдпрдерди рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рди рдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕реАрдЦрддреЗ рд╣реИрдВ:
def sum(x, y): return x + y sum(10, '10') >>> TypeError: can only concatenate str (not "int") to str
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЪреБрдиреМрддреА рдордЬрдмреВрдд рд╣реЛрддреА рд╣реИред рдЖрдзреБрдирд┐рдХ рдкрд╛рдпрдерди рдиреЗ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдЗрдВрдЬрди рдФрд░ рдЯрд╛рдЗрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЗрд╕ рдЪреБрдиреМрддреА рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕рдореБрджрд╛рдп рдиреЗ рдРрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рд╣реИрдВ рдЬреЛ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрддрд╛ рд╣реИ:
рдкрд╛рдпрдерди рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╣рддреНрд╡ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ __annotations__
рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдорд╛рдиреНрдп рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрд╕реНрдХрд░рдг 3.0 рдореЗрдВ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж рд╕реЗ (рдЬреЛ рджрд╕ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдкрд╣рд▓реЗ рдерд╛!), рдпрд╣ рд╕рдореБрджрд╛рдп рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдерд╛ рдЬреЛ рдЪрд░ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЕрдВрдХрди рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рдерд╛ред
рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ред рдЯрд┐рдк 2: рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдпрд╣ рдХреЛрдб рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЖрдкрдХреЛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ рд╣рд░ рдЪреАрдЬ рдФрд░ рд╣рд░ рдЪреАрдЬ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдХреЛрдб рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдбреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЛ рд╕реМ рдЧреБрдирд╛ рдкреБрд░рд╕реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛!
рдиреАрдо рд╣рдХреАрдо! рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ
рдХрдИ рдмрд╛рд░, рдкрд╛рдпрдерди рдЙрддреНрд╕рд╛рд╣реА рд░рд╣рд╕реНрдпрдордп рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рдбрдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред
рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдмрддреНрддрдЦ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ:
рдпрджрд┐ рдХреЛрдИ рд╡рд╕реНрддреБ рдмрддрдЦ рдХреА рддрд░рд╣ рдлрдЯрддреА рд╣реИ, рддреЛ рдмрддрдЦ рдХреА рддрд░рд╣ рдЙрдбрд╝рддреА рд╣реИ рдФрд░ рдмрддрдЦ рдХреА рддрд░рд╣ рдЪрд▓рддреА рд╣реИ, рддреЛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдмрддрдЦ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
class RpgCharacter: def __init__(self, weapon) self.weapon = weapon def battle(self): self.weapon.attack()
рдпрд╣рд╛рдБ рдХреНрд▓рд╛рд╕рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рд╣реИред RpgCharacter
рд╡рд░реНрдЧ weapon
рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдореЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ, battle()
рд╡рд┐рдзрд┐ рдореЗрдВ, weapon.attack()
рдмреБрд▓рд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди RpgCharacter
weapon
рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рддрд▓рд╡рд╛рд░, рдмреАрдПрдлрдЬреА 9000, рдпрд╛ рдПрдХ рдлреВрд▓ рдХреЗ рдмрд░реНрддрди рдХреЗ рд╕рд╛рде рд╡реНрд╣реЗрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рджреБрд╢реНрдорди рдХреЗ рд╕рд┐рд░ рдкрд░ рдЙрддрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ attack()
рд╡рд┐рдзрд┐ рд╣реИ, рдкрд╛рдпрдерди рдХреЛ рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред

рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рдирд╛, рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рднреА (рдореЗрд░реЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд) рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдЬреЛ рдУрдУрдкреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдбрд╛рдпрдирд╛рдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдирд╛рдо рд╡рд╛рд▓реА рд╡рд┐рдзрд┐? рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЪрд░ рдХрд╛ рдирд╛рдо? рдЖрдкрдХрд╛ рд╕рд╣рдХрд░реНрдореА, рдпрд╛ рдЖрдк рдЦреБрдж, рд▓рдЧрднрдЧ рдЖрдзреЗ рд╕рд╛рд▓ рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рд░реЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реЛрдВрдЧреЗ :)
рдпрджрд┐ рд╣рдо рд╕рд╢рд░реНрдд рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? interface IWeapon { void attack(); } public class Sword implements IWeapon { public void attack() {
рдФрд░ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдЯреИрдЯрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реЛрдЧреА, рдЬрд┐рд╕рдореЗрдВ рдХрдВрдкреНрд▓реАрд╢рди рд╕реНрдЯреЗрдЬ рдкрд░ рдЪреЗрдХрд┐рдВрдЧ рд╣реЛрдЧреАред рдореВрд▓реНрдп - рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ attack()
рд╡рд┐рдзрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ IWeapon
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЯрд┐рдк 3 : рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рддрд░реАрдХреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдмреЗрд╣рддрд░ рдЕрднреА рддрдХ, рдЕрдкрдиреЗ рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд▓реЗрдЦрди рдкреНрд░рд▓реЗрдЦрди рдЦрд░реНрдЪ рдХрд░реЗрдВред
рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ __ рд╡рд┐рд╢реЗрд╖_ рд╡рд┐рдзрд┐рдпрд╛рдБ __ ()
рдкрд╛рдпрдерди рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛ рд╣реИ рдФрд░ object
рдХреНрд▓рд╛рд╕ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдореВрд▓ рдореЗрдВ рд╣реИ:
isinstance('abc', object) >>> True isinstance(10, object) >>> True
рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдБ Java рдФрд░ C # рдореЗрдВ obj.ToString()
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, obj.ToString()
рдореЗрдВ str(obj)
рд▓рд┐рдП рдХреЙрд▓ рдЖрдПрдЧрд╛ред рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, myList.length
рдмрдЬрд╛рдп, рдкрд╛рдпрдерди рдиреЗ len(my_list)
ред рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛, рдЧреБрдЗрдбреЛ рд╡реИрди рд░реЛрд╕реБрдо рдиреЗ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдордЭрд╛рдпрд╛:
рдЬрдм рдореИрдВ len(x)
рдХрд╣рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рдкрдврд╝рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рддреБрд░рдВрдд рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛрдЧрд╛, рдФрд░ рддрд░реНрдХ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдВрдЯреЗрдирд░ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрдм x.len()
рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ x
рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ len()
рд╡рд┐рдзрд┐ рд╣реИред [рд╕реНрд░реЛрдд]
рдлрд┐рд░ рднреА, рдЕрдкрдиреЗ рдЕрдВрджрд░, рдлрд╝рдВрдХреНрд╢рди len()
, str()
рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ:
class User: def __init__(self, name, last_name): self.name = name self.last_name = last_name def __str__(self): return f"Honourable {self.name} {self.last_name}" u = User('Alex', 'Black') label = str(u) print(label) >>> Honourable Alex Black
рднрд╛рд╖рд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЧрдгрд┐рддреАрдп рдФрд░ рдмреВрд▓рд┐рдпрди рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде for ... in ...
рд▓реВрдк рдСрдкрд░реЗрдЯрд░реЛрдВ, рд╕рдВрджрд░реНрдн рдСрдкрд░реЗрдЯрд░, рдЗрдВрдбреЗрдХреНрд╕ рдСрдкрд░реЗрдЯрд░ []
, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рднреА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ __iter__()
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: __iter__()
рдФрд░ __next__()
:
рдЦреИрд░, рдЖрдЗрдП рдмрддрд╛рддреЗ рд╣реИрдВ рдЦрд╛рд╕ рддрд░реАрдХреЗред рд▓реЗрдХрд┐рди рд╡реЗ рдЗрддрдиреЗ рдореБрдбрд╝ рдХреНрдпреЛрдВ рджрд┐рдЦрддреЗ рд╣реИрдВ? рдЧреБрдЗрдбреЛ рдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдмрд┐рдирд╛ рдирд╛рдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо рдереЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЦреБрдж рдХрдо рд╕реЗ рдХрдо, рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╛рдиреА ____()
рдореВрд░реНрдЦ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рддрд░рд╣ рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╕рдордп рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ - рд╕рдВрд░рдХреНрд╖рдг рдкреНрд░рднрд╛рд╡реА рд╣реИ :)
рдЯрд┐рдк 4: рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рд╡реЗ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЛрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╣рд╛рдБ рд╣реИ? рдореЗрд░рд╛ рдирд┐рдЬреА рдХрд╣рд╛рдБ рд╣реИ ?! рдореЗрд░реА рдкрд░реАрдХрдерд╛ рдХрд╣рд╛рдБ рд╣реИ !!
рдкрд╛рдпрдерди рдореЗрдВ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкрд╣реБрдБрдЪ рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдВрджрд░реВрдиреА рд╣рд┐рд╕реНрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╕рдореНрдорд▓реЗрди рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрдкрд╕рд░реНрдЧ _
рд╕рд╛рде рдЧреБрдг рдХреЛ рдирд┐рдЬреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
import os class MyFile:
рдХреНрдпреЛрдВ?
рдкрд╛рдпрдерди рдореЗрдВ рдХреБрдЫ рднреА рдирд┐рдЬреА рдирд╣реАрдВ рд╣реИред рди рддреЛ рдХрдХреНрд╖рд╛ рдФрд░ рди рд╣реА рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рдЕрдВрджрд░ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реЛрдЧрд╛ (рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЧрд╣рди рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рд╕рдВрднрд╡ рд╣реИ)ред рдЕрдЬрдЧрд░ рдЖрдк рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдХрд╣рддреЗ рд╣реИрдВ, "рдмрдбреА, рдЕрдЧрд░ рдЖрдк рдЕрдВрдзреЗрд░реЗ рдХреЛрдиреЛрдВ рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝реЗрдВрдЧреЗред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕рднреА рдпрд╣рд╛рдБ рд╡рдпрд╕реНрдХ рд╣реИрдВред
- рдХрд╛рд░реНрд▓ рдлрд╛рд╕реНрдЯ [рд╕реНрд░реЛрдд] ред
рд▓реЗрдХрд┐рди рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рджреМрд░рд╛рди рдирд╛рдо рдЯрдХрд░рд╛рд╡ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП?рдкрд╛рдпрдерди рдореЗрдВ рдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ ( __my_attr
) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдирд╛рдо рдХреЛ __my_attr
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░ рд╣реИ! рдпрд╣ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди рдирд╛рдо рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд░реАрд░ рдХреЗ рдмрд╛рд╣рд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдЙрдкрд╕рд░реНрдЧ ___
рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ:
class C: def __init__(self): self.__x = 10 def get_x(self): return self.__x c = C() c.__x >>> 'C' object has no attribute '__x' print(c.get_x()) >>> 10 print(c._C__x) >>> 10
рдЖрдЗрдП рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреЗрдЦреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, File
рд╡рд░реНрдЧ, рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рд╣рдо рдХреИрд╢рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╕рд╣рдпреЛрдЧреА рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рд╢реНрд░рд┐рдд рд╡рд░реНрдЧ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдШрд░реНрд╖реЛрдВ рд╕реЗ рддрд░реАрдХреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╣рдХрд░реНрдореА рдиреЗ рдЕрдкрдиреЗ рдирд╛рдореЛрдВ рдореЗрдВ __
рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рд╛:
class BaseFile: def __init__(self, path): self.path = path class LocalMixin: def read_from_local(self): with open(self.path) as f: return f.read() class CachedMixin: class CacheMissError(Exception): pass def __init__(self):
рдпрджрд┐ рдЖрдк CPython рдореЗрдВ рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ Python / compile.c рдореЗрдВ рджреЗрдЦреЗрдВ
рдЕрдВрдд рдореЗрдВ, рднрд╛рд╖рд╛ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг, рдЬрд╛рд╡рд╛ рд╢реИрд▓реА рдореЗрдВ getX(), setX()
рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ: getX(), setX()
ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд┐рдд рдХрдХреНрд╖рд╛ Coordinates
,
class Coordinates: def __init__(self, x, y): self.x = x self.y = y c = Coordinates(10, 10) print(cx, cy) >>> (10, 10)
рдореБрдЭреЗ x
рд╡рд┐рд╢реЗрд╖рддрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕рд╣реА рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ property
рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рд╕реЗ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдмрдВрдз рдмрдирд╛ рд░рд╣реЗред
class Coordinates: _x = 0 def __init__(self, x, y): self.x = x self.y = y @property def x(self): return self._x @x.setter def x(self, val): if val > 10: self._x = val else: raise ValueError('x should be greater than 10') c = Coordinates(20, 10) cx = 5 >>> ValueError: x should be greater than 10
рдЯрд┐рдк 5: рдЕрдЬрдЧрд░ рдХреА рддрд░рд╣, рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рд╕рдореНрдореЗрд▓рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╛рд░рд╛рдЬ рди рд╣реЛрдВ рдпрджрд┐ "рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ" рддреЛ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдХрд┐ рдЖрдкрдиреЗ рдЙрдирдХреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕рднреА рдпрд╣рд╛рдБ рд╡рдпрд╕реНрдХ рд╣реИрдВ :) ред
рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛
рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХреГрддрд┐ рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреВрдард╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд░реЛрдзрди рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд▓рд╛ рд╕реА ++ / рдЬрд╛рд╡рд╛, рдЖрдк рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ
"рдИрдЬреАрдПрдлрдкреА рдХреА рдЕрдиреБрдорддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╛рдлреА рдХреЗ рд▓рд┐рдП рдкреВрдЫрдирд╛ рдЖрд╕рд╛рди рд╣реИред"
рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдордд рд▓рд┐рдЦреЛ if
, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдЗрд╕ рд╢рд╛рдЦрд╛ рдкрд░ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, try..except
рдореЗрдВ рддрд░реНрдХ рдХреЛ try..except
ред
рдЙрджрд╛рд╣рд░рдг: рдПрдХ POST рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рд╕рд╢рд░реНрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ (рд╢рдмреНрджрдХреЛрд╢) рд╣реИ:
def create_user_handler(data: Dict[str, str]): try: database.user.persist( username=data['username'], password=data['password'] ) except KeyError: print('There was a missing field in data passed for user creation')
рд╣рдордиреЗ рдЪреЗрдХ "рдХреНрдпрд╛ username
рдпрд╛ password
data
рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ" рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╣рдо рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЕрдиреБрдорддрд┐" рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЕрдЧрд▓реЗ рдХреБрд▓реНрд╣реЗрд░ рд▓рд╛рдкрддрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдлреЙрд░реНрдо рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рдорд╛рдлреА рдорд╛рдВрдЧреЗрдВ"ред
рдмрд╕ рдЗрд╕реЗ рдЧреИрд░рдмрд░рд╛рдмрд░реА рдХреА рдмрд╛рдд рдкрд░ рдордд рд▓рд╛рдУ!рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рдирд╛рдо рдбреЗрдЯрд╛ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдЗрд╕реЗ рдЦрд╛рд▓реА рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдпрд╛ рдирд╣реАрдВред if
рдпрд╣рд╛рдБ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛:
def create_user_handler(data): if 'last_name' not in data: data['last_name'] = '' try: database.user.persist( username=data['username'], password=data['password'], last_name=data['last_name'] ) except KeyError: print('There was a missing field in data passed for user creation')
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрднреА рднреА рдЪреБрдкрдЪрд╛рдк рдирд╣реАрдВ рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред - рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рди рдХрд░реЗрдВ! рдЖрдзреБрдирд┐рдХ рдкрд╛рдпрдерди рдореЗрдВ рдирд┐рд░реНрдорд╛рдг raise from
рдПрдХ рдЕрджреНрднреБрдд raise from
рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрд╡рд╛рдж рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
class MyProductError(Exception): def __init__(self): super().__init__('There has been a terrible product error') def calculate(x): try: return 10 / x except ZeroDivisionError as e: raise MyProductError() from e
raise from e
MyProductError
рдмрд┐рдирд╛ raise from e
рдЕрдкрд╡рд╛рдж рд╢реНрд░реГрдВрдЦрд▓рд╛ MyProductError
рдкрд░ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╣рдо рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рдерд╛ред raise from X
рд╕рд╛рде, рдереНрд░реЛ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг (рдпрд╛рдиреА X
) __cause__
рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ:
try: calculate(0) except MyProductError as e: print(e.__cause__) >>> division by zero
рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╣реИ: StopIterationрдПрдХ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯреЙрдкрдЗрдВрдЯрд░реЗрд╢рди рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдирд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред
class PositiveIntegers: def __init__(self, limit): self.counter = 0 self.limit = limit def __iter__(self): return self def __next__(self): self.counter += 1 if self.counter == self.limit:
рдЯрд┐рдк 6: рд╣рдо рдХреЗрд╡рд▓ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдордд рдХрд░реЛ!
рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдФрд░ рдЕрдзрд┐рдорд╛рдирддрдГ рдХреЗрд╡рд▓ рдПрдХ рд╣реА - рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рддрд░реАрдХрд╛ред
switch
рдпрд╛ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди? - if
рдФрд░ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред do-
? - рдЗрд╕рдХреЗ рд▓рд┐рдП while
рдФрд░ for
ред goto
? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЦреБрдж рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдбрд┐рдЬрд╝рд╛рдЗрди рддрдХрдиреАрдХреЛрдВ рдФрд░ рдкреИрдЯрд░реНрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рджреА рдЧрдИ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреЛрдИ рддрдХрдиреАрдХреА рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл "рд╣рдо рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ"ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдореЗрдВ рдЖрдк рдЕрдХреНрд╕рд░ "рдмрд┐рд▓реНрдбрд░" рдкреИрдЯрд░реНрди рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд╛рдо рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреЗ рдмрджрд▓реЗ
human = HumanBuilder.withName("Alex").withLastName("Black").ofAge(20).withHobbies(['tennis', 'programming']).build()
рд╣реЛрдЧрд╛
human = Human( name="Alex" last_name="Black" age=20 hobbies=['tennis', 'programming'] )
рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдХреЛрдЯрд▓рд┐рди рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╕рд╣рдХрд░реНрдореА рдиреЗ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрд░реНрдереЛрдВ рдХрд╛ рдХреЛрдб рдХреИрд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдерд╛ (рд░рд╛рдЗрдирд▓рд┐рди рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
val shortGreetings = people .filter { it.name.length < 10 } .map { "Hello, ${it.name}!" }
рдкрд╛рдпрдерди рдореЗрдВ, map()
, filter()
рдФрд░ рдХрдИ рдЕрдиреНрдп, рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ, рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдХрд░рдХреЗ, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
short_greetings = map(lambda h: f"Hello, {h.name}", filter(lambda h: len(h.name) < 10, people))
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рднрдпрд╛рдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕реЗ рд▓рдВрдмреЗ рдмрдВрдбрд▓ рдХреЗ рд▓рд┐рдП .takewhile().filter().map().reduce()
рддрдерд╛рдХрдерд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рд╕рдорд╛рд╡реЗрд╢рди (рдХреЙрдореНрдкреНрд░рд┐рд╣реЗрдВрд╢рди), тАЛтАЛрдпрд╛ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЪрдХреНрд░ред рд╡реИрд╕реЗ, рдХреЛрдЯрд▓рд┐рди рдкрд░ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЧрдд рд╕реВрдЪреА рд╕рдордЭ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЕрдЬрдЧрд░ рдкрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
short_greetings = [ f"Hello {h.name}" for h in people if len(h.name) < 10 ]
рдЬрдВрдЬреАрд░ рдЫреВрдЯрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдПрдкрд╛рдЗрдк рдпрд╛ py_linq рдЬреИрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ!
рд╡рд┐рдзрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡реЗ рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Django рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд╡реЗрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
query = User.objects \ .filter(last_visited__gte='2019-05-01') \ .order_by('username') \ .values('username', 'last_visited') \ [:5]
рдЯрд┐рдк 7: рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдкрд╛рдпрдерди рдореЗрдВ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рдПрдХ рдЕрдиреБрднрд╡реА рдЕрдЬрдЧрд░ рдХреНрдпрд╛ рдирд┐рд░реНрдгрдп рдХрд░реЗрдЧрд╛?
рдЕрдЬрдЧрд░ рдзреАрдорд╛
рд╣рд╛рдВред
рд╣рд╛рдВ, рдЬрдм рдпрд╣ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдФрд░ рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╡рд╛рдм рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдкрд╛рдпрдерди рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╕реАрдкреАрдереЙрди) рдЗрд╕рдХреЗ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рджреВрд░ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдг рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рди рдХрд░реЗрдВред рдФрд░ рддрд░реНрдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ - рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХреЛрдб рдХрд╛ рдорддрд▓рдм рдХрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ, рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рдЕрд╡рд╕рд░ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЬреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛, рд╕рдордЭрдирд╛ рдФрд░ рдкреВрд░рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЬреЗрдХ VanderPlas рдиреЗ рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рдмрддрд╛рдпрд╛ рдХрд┐ рд╕реАрдкреАрдереЙрди рдореЗрдВ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдиреЛрдВ рд╡рд╛рд▓реЗ рджреЛ рдЪрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
a = 1 b = 2 c = a + b
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕реАрдкреАрдереЙрди рдХреЗ рдЬрдВрдЧрд▓ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░ a
, b
рдФрд░ c
рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдвреЗрд░ рдкрд░ рддреАрди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдФрд░ (рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЯреВ) рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ; binary_add<int, int>(a->val, b->val)
рдЬреИрд╕реЗ рдХреБрдЫ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдХрд╛рд░ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдирд╛; рдкрд░рд┐рдгрд╛рдо рдХреЛ c
рд▓рд┐рдЦреЗрдВред
рдпрд╣ рд╕рдорд╛рди рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдХреНрд╖рдо рд╣реИред
рд╕реАрдкреАрдереЙрди рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдкрд░реЗрд╢рд╛рдиреА рддрдерд╛рдХрдерд┐рдд рд╣реИ рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (GIL)ред рдпрд╣ рддрдВрддреНрд░, рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдореНрдпреВрдЯреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд▓рдЧреНрди рдмреВрд▓рд┐рдпрди рдореВрд▓реНрдп, рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреАрдЖрдИрдПрд▓ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдХреЛрдб рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ: рд╕реАрдкреАрдереЙрди рдХреЛ рдЪрд░ рдпрд╛ рдЧрддрд┐рд░реЛрдзреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдзрд╛рдЧрд╛ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдкрд░ рдмрд╛рдпреЛрдЯреЗрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ :

UPD: рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рдмрд╣реБ-рд╕реВрддреНрд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬрд╛рджреБрдИ рдХрд╛рдо рдХрд░реЗрдЧрд╛! рдкрд╛рдпрдерди рдкрд░ рдХреЛрдб рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдмрд╛рдИрдЯрдХреЛрдб рдХреЛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ! рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрднреА рднреА рдХреЛрдб рдореЗрдВ рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣рд╛рдВ рдкрд╛рдпрдерди рдореЗрдВ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореГрджреНрдз рд╕реЗрдЯ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдФрд░ рдмрд╣реБ-рдкреНрд░рдХреНрд░рд┐рдпрд╛-рдЖрдзрд╛рд░рд┐рдд рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реИрдВ рдХрд┐ рдЬреАрдЖрдИрдПрд▓ рдХреЛ рдЬрдбрд╝ рд╕реЗ рдЙрдЦрд╛рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ ?
- . ( CFFI ) . API (extensions) C/C++. , Rust, Go Kotlin Native !
- , :
8: , . , IO (, , ) , , , , :)
? Linux MacOS, 95% . , 3., 2.7. Windows . : Docker, Windows Subsystem for Linux, Cygwin, , .
9: . , тАФ - .
"Hello world" ? рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! machine learning- - Python Package Index (PyPI).
(packages), .. (virtual environments). , . - . pip
. pip
. , pipenv
poetry
тАФ npm, bundler, cargo ..
0xA: тАФ pip
virtualenv
. тАФ , , . , тАФ sys.path
тАФ , .
?
? . :
Dive into python...
, . , , :)
, !