рдЕрдЬрдЧрд░ рджреБрднрд╛рд╖рд┐рдпрд╛: рд╕рд╛рдБрдк рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИ? (рднрд╛рдЧ I-III)

рдЫрд╡рд┐

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ
рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рддреАрди рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдмрд╣реБрдд рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рджред рд▓реЗрдЦрдХ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдкрдиреА рд╕рд╛рдЗрдХрд┐рд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдЬреНрдЮрд╛рди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИред рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рдЗрд╕рд╕реЗ рдмрд╛рд╣рд░ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред


рд▓реЗрдЦреЛрдВ рдХреА рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдЬрдЧрд░ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рдЕрдВрджрд░ рд╕реЗ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рдЦрд░рд╛рдм рд╣реИред рджрд░рдЕрд╕рд▓, рддреАрди рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореЗрд░реА рддрд░рд╣ред

рдЫреЛрдЯрд╛ рдЕрд╕реНрд╡реАрдХрд░рдг: рдореИрдВ рдЕрдЬрдЧрд░ 2.7 рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдХрд╣рд╛рдиреА рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реВрдВрдЧрд╛ред рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдм рдХреБрдЫ рдЕрдЬрдЧрд░ 3.x рдкрд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдирд╛рдордХрд░рдг рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рднрд╛рдЧ I. рдкрд╛рдпрдерди рдХреЛ рд╕реБрдиреЗрдВ, рдФрд░ рдЖрдкрдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ?



рдЖрдЗрдП рдереЛрдбрд╝рд╛ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдордЬрдмреВрдд) рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрдпрд╛рд░реЗ рд╕рд╛рдБрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЬрдм рдЖрдк рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

>>> a = "hello" 


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

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

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░,

рдлрдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдпрд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рддрд░рд╣



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

 >>> def foo(a): ... x = 3 ... return x + a ... >>> foo <function foo at 0x107ef7aa0> 


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

рднрд╛рдЧ II рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓



рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдмрджрд▓реЗ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ:

 >>> def foo(a): ... x = 3 ... return x + a ... >>> foo <function foo at 0x107ef7aa0> >>> foo.func_code <code object foo at 0x107eeccb0, file "<stdin>", line 1> 


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

рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рдкрд╛рдпрдерди рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдЗрдП рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджреЗрдЦреЗрдВ:

 >>> dir(foo.func_code) ['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames'] 


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

 >>> foo.func_code.co_varnames ('a', 'x') >>> foo.func_code.co_consts (None, 3) >>> foo.func_code.co_argcount 1 


рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдмрд╣реБрдд рд╕рд╣рдЬ рджрд┐рдЦрддреА рд╣реИрдВ:
co_varnames - рдЪрд░ рдирд╛рдо
co_consts - рдорд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдЬрд╛рдирддрд╛ рд╣реИ
co_argcount - рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛

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

 >>> foo.func_code.co_code 'd\x01\x00}\x01\x00|\x01\x00|\x00\x00\x17S' 


рдЖрдк рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдЕрдЬреНрдЮрд╛рдд рдмрд╛рдЗрдЯ рдХрдЪрд░реЗ рдХреЛ рдкреВрдЫрддреЗ рд╣реИрдВ?

рднрд╛рдЧ III рдмрд╛рдИрдЯрдХреЛрдб



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

рдпрд╣ рдмрд╛рдпреЛрдЯреЗрдХ рдХреНрдпрд╛ рд╣реИ? рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИред рдХрдВрд╕реЛрд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдкрд╛рдЧрд▓ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдЪрд▓реЛ рдЗрд╕реЗ ord рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ:

 >>> [ord(b) for b in foo.func_code.co_code] [100, 1, 0, 125, 1, 0, 124, 1, 0, 124, 0, 0, 23, 83] 


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

рдЖрдк CPython рджреБрднрд╛рд╖рд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ (ceval.c) рдЦреЛрд▓рдХрд░ рдмрд╛рдИрдЯреЗрдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЕрдзрд┐рдХ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВред рдЕрдм рдЪрд▓реЛ рдЖрд╕рд╛рди рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ dis рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░ рд▓реЗрдВ



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

рддреЛ, рдЖрдЗрдП рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмреБрд░реНрдХрд╛ рд╣рдЯрд╛ рджреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, dis.dis рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 >>> def foo(a): ... x = 3 ... return x + a ... >>> import dis >>> dis.dis(foo.func_code) 2 0 LOAD_CONST 1 (3) 3 STORE_FAST 1 (x) 3 6 LOAD_FAST 1 (x) 9 LOAD_FAST 0 (a) 12 BINARY_ADD 13 RETURN_VALUE 


рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
рдЕрдХреНрд╕рд░ рдЖрдк рдлреЙрд░реНрдо рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред dis.dis(foo) , рдЕрд░реНрдерд╛рдд рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реАрдзреЗ disassembler рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реБрдб рдХреЗ рдиреАрдЪреЗ, func_code рдЕрднреА рднреА func_code рдкрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг func_code ред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред


рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрддреЛрдВ рдХреА рд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВред рджреВрд╕рд░рд╛ рдХреЙрд▓рдо рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рдЯреАрдореЛрдВ рдХреА рдСрдлрд╕реЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ: LOAD_CONST "0" рд╕реНрдерд┐рддрд┐ рдкрд░ STORE_FAST , STORE_FAST рд╕реНрдерд┐рддрд┐ "3", рдЖрджрд┐ рдкрд░ рд╣реИред рддреАрд╕рд░рд╛ рдХреЙрд▓рдо рдмрд╛рдЗрдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдорд╛рдирд╡-рдкрдардиреАрдп рдирд╛рдо рджреЗрддрд╛ рд╣реИред рдЗрди рдирд╛рдореЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рджрдпрдиреАрдп рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣реЛрддреА рд╣реИ, рд╡реЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдВрддрд┐рдо рджреЛ рдХреЙрд▓рдореЛрдВ рдореЗрдВ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╣реИ, рдпрджрд┐ рдХреЛрдИ рд╣реЛред рдЪреМрдерд╛ рд╕реНрддрдВрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рддрд░реНрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, LOAD_CONST рдирд┐рд░реНрджреЗрд╢ LOAD_CONST co_consts рд╕реВрдЪреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реИ, STORE_FAST рддрд░реНрдХ co_varnames рдХреА рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдкрд╛рдВрдЪрд╡реЗрдВ рдХреЙрд▓рдо рдореЗрдВ, dis рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдпрд╛ рдирд╛рдо рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ:

 >>> foo.func_code.co_consts[1] 3 >>> foo.func_code.co_varnames[1] 'x' 


рдпрд╣ рднреА рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ STORE_FAST рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рддреАрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реИ: рдпрджрд┐ STORE_FAST рдореЗрдВ рдХрд╣реАрдВ рдПрдХ рддрд░реНрдХ рд╣реИ, рддреЛ рдЕрдЧрд▓реЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдЙрд╕ рддрд░реНрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдВрдЧреЗред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рд╕рд╣реА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рднреА рд░рд╣рддреА рд╣реИред

рд╕рдВрдХреЗрдд
рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ BINARY_ADD рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреА рдХрдореА рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдереЗ - рдЕрдкрдиреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдХреБрдХреА рд▓реЗрдВ, рд▓реЗрдХрд┐рди рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд▓реМрдЯреЗрдВрдЧреЗ, рдЬрдм рд╣рдо рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред


LOAD_CONST рдмрд╛рдЗрдЯреНрд╕ (рдЙрджрд╛ред 100) рдХреЛ рд╕рд╛рд░реНрдердХ рдирд╛рдореЛрдВ (рдЙрджрд╛ред LOAD_CONST ) рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдХреИрд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ? рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд╛ рдЖрдпреЛрдЬрди рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ? рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ "рдареАрдХ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕реВрдЪреА рд╣реИ" рдпрд╛ рдлрд┐рд░ "рдХреБрдВрдЬреА рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢", рдмрдзрд╛рдИ - рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИрдВред рдареАрдХ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред Opcode.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╕реНрд╡рдпрдВ рд╣реЛрддреА рд╣реИрдВ (рдЖрдк opcode.h рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ), рдЬрд╣рд╛рдБ рдЖрдк ~ рдбреЗрдврд╝ рд╕реМ рдРрд╕реА рд▓рд╛рдЗрдиреЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 def_op('LOAD_CONST', 100) # Index in const list def_op('BUILD_TUPLE', 102) # Number of tuple items def_op('BUILD_LIST', 103) # Number of list items def_op('BUILD_SET', 104) # Number of set items 


(рдХреБрдЫ рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░ рдиреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред)

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

Source: https://habr.com/ru/post/In206420/


All Articles