рдЕрдВрджрд░ рд╕реЗ рдмрд╛рд╣рд░ рдЕрдЬрдЧрд░ред рдкрд░рд┐рдЪрдп

рдмреЛрдЖ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ 1. рдкрд░рд┐рдЪрдп
2. рд╡рд╕реНрддреБред рд╕рд┐рд░
3. рд╡рд╕реНрддреБред рдкреВрдВрдЫ
4. рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ

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

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

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

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

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

рдЙрдкрд░реЛрдХреНрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдЗрдП рдПрдХ рдкрдХреНрд╖реА рдХреА рдЖрдВрдЦ рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдХрд┐ рдЬрдм рд╣рдо рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

$ python -c 'print("Hello, world!")' 

рдкрд╛рдпрдерди рдмрд╛рдЗрдирд░реА рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдорд╛рдирдХ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ), рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрд░реЛрддреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ ./Modules/python.c : main , рдЬрд╣рд╛рдБ рд╕реЗ ./Modules/main.c : Py_Main )ред рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж (рддрд░реНрдХ-рд╡рд┐рддрд░реНрдХ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдорд╛рдирдХ рдереНрд░реЗрдбреНрд╕ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реБрдП), / ./Python/pythonrun.c / ./Python/pythonrun.c : Py_Initialize ред рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди "рдмрдирд╛рддрд╛ рд╣реИ" рдФрд░ CPython рдорд╢реАрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╕ "рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдЕрдВрджрд░ "рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд░рдЪрдирд╛рдПрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ: рджреБрднрд╛рд╖рд┐рдпрд╛ рд░рд╛рдЬреНрдп рдФрд░ рд╕реНрдЯреНрд░реАрдо рд░рд╛рдЬреНрдп ред рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореЙрдбреНрдпреВрд▓ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рднреА рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЪрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдбрд╝рд┐рдпреЛрдВ рдореЗрдВ, рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рд╕рдм рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╛рдпрдерди рдХрдИ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕реЗ рдЦрд┐рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░: рдПрдХ рд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА (рд╡рд┐рдХрд▓реНрдк -c ), рдПрдХ рдореЙрдбреНрдпреВрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╡рд┐рдХрд▓реНрдк -m ), рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдкрд╛рд░рд┐рдд рдпрд╛ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд, рдЕрдЧрд░ рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ) рдпрд╛ рдЖрд░рдИрдкреАрдПрд▓ рд╢реБрд░реВ рд╣реЛрдЧрд╛ (рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ)ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ -c рд╡рд┐рдХрд▓реНрдк рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ./Python/pythonrun.c : PyRun_SimpleStringFlags ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди __main__ рдирд╛рдорд╕реНрдерд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рдХреЛрдб рдСрдлрд╝ рд▓рд╛рдЗрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА (рдЬрд╣рд╛рдБ $ python -c 'a=1; print(a)' ? $ python -c 'a=1; print(a)' __main__ $ python -c 'a=1; print(a)' рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдпрд╣ рд╕рд╣реА рд╣реИ, рдЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ)ред рдЕрдВрддрд░рд┐рдХреНрд╖ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрд╕рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рддреА рд╣реИ)ред рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВ рдкрд╛рд░реНрд╕рд░ рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╛рдпрдерди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдкрд╛рдпрдерди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рдХ рдкрд░ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдкрд░реЗ рд╣реИред рд╣рдо рдмрд╕ рдЗрди рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдКрдкрд░ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рд╕рдордп рдмрд╛рдж рд╕реАрдкреАрдереЙрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реИрд╢реНрд╡рд┐рдХ рдСрдкрд░реЗрдЯрд░, рдЬреЛ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, PyRun_SimpleStringFlags рдореЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ / рд╕рдВрдХрд▓рди рдЪрд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ: рдПрдХ рдкрд╛рд░реНрд╕ рдЯреНрд░реА рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдирд┐рд░реНрдорд╛рдг, рдПрдХ рд╕рд╛рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА (рдПрдПрд╕рдЯреА) рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди, рдПрдПрд╕рдЯреА рдХрд╛ рд╕рдВрдХрд▓рди рдПрдХ рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ./Python/ast.c / PyAST_FromNode : PyAST_FromNode ред рдЕрдм рдЖрдк рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдмрд╛рдЗрдирд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рддрдВрддреНрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЕрдм рд╣рдо рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ рдЦрд╛рд▓реА __main__ , рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ? рд╕реЗ рд▓рд╛рдЗрди ./Python/pythonrun.c : run_mod :

 v = PyEval_EvalCode((PyObject*)co, globals, locals); 

рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ globals рдФрд░ locals рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдирдП рдмрдирд╛рдП рдЧрдП рдирд╛рдорд╕реНрдерд╛рди __main__ ), рдлреНрд░реЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╛рдкрд╕ Py_Initialize , рдЬреЛ рд╕реНрдЯреНрд░реАрдо рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрдб рд╕реНрдЯреНрд░реАрдо рдХреЛ рдПрдХ рдЕрд▓рдЧ рд░рд╛рдЬреНрдп рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ (рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмреАрдЪ) рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рддрдЦреНрддреЗ рдХреЗ рдвреЗрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд╝реНрд░реЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдФрд░ рд╕реНрдЯреНрд░реАрдо рд╕реНрдерд┐рддрд┐ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдЗрдЯрдХреЛрдб) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд▓рдВрдмреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ ./Python/ceval.c : PyEval_EvalFrameEx ред

PyEval_EvalFrameEx рдПрдХ рдлреНрд░реЗрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдСрдкрд░реЗрд╢рди рдХреЛрдб (рдФрд░ рдСрдкрд░реЗрдВрдб, рдпрджрд┐ рдХреЛрдИ рд╣реЛ; рд╣рдо PyEval_EvalFrameEx рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ) рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЛрдб рдХреЗ рдЕрдиреБрд░реВрдк рд╕реА рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдкрд╛рдпрдерди рдХреЛрдб рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпреЗ "рдСрдкрд░реЗрд╢рди рдХреЛрдб" рдХреНрдпрд╛ рд╣реИрдВ:

 >>> from dis import dis # !    ! >>> co = compile("spam = eggs - 1", "<string>", "exec") >>> dis(co) 1 0 LOAD_NAME 0 (eggs) 3 LOAD_CONST 0 (1) 6 BINARY_SUBTRACT 7 STORE_NAME 1 (spam) 10 LOAD_CONST 1 (None) 13 RETURN_VALUE >>> 

... рдмрд╣реБрдд рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рднреА, рдмрд╛рдпреЛрдЯреЗрдХ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкрдардиреАрдп рд╣реИред рд╣рдо рдирд╛рдо eggs рд╕рд╛рде рдХреБрдЫ "рд▓реЛрдб" рдХрд░рддреЗ eggs (рд╣рдо рдЗрд╕реЗ рдХрд╣рд╛рдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо рдЗрд╕реЗ рдХрд╣рд╛рдВ рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ?) рдФрд░ рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдп (1) рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ "рдмрд╛рдЗрдирд░реА рдШрдЯрд╛рд╡" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣рд╛рдВ "рдмрд╛рдЗрдирд░реА" рд╢рдмреНрдж рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рдХреНрдпрд╛ рдСрдкрд░реЗрдВрдб рд╣реИрдВ?), рдФрд░ рдЗрддрдиреЗ рдкрд░ред

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

рдЖрдк ./Python/ceval.c PyEval_EvalFrameEx рдлрд╝рд╛рдЗрд▓ рдореЗрдВ PyEval_EvalFrameEx рдлрд╝рдВрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдБ рдЗрд╕рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ BINARY_SUBTRACT рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдХреЛ BINARY_SUBTRACT :

 TARGET(BINARY_SUBTRACT) { PyObject *right = POP(); PyObject *left = TOP(); PyObject *diff = PyNumber_Subtract(left, right); Py_DECREF(right); Py_DECREF(left); SET_TOP(diff); if (diff == NULL) goto error; DISPATCH(); } 

... рдкрд╣рд▓реЗ рдСрдкрд░реЗрдВрдб рдХреЛ рдкреЙрдк рдХрд░реЗрдВ, рд╕реНрдЯреИрдХ рд╕реЗ рджреВрд╕рд░рд╛ рдСрдкрд░реЗрдВрдб рд▓реЗрдВ, PyNumber_Subtract C рдлрдВрдХреНрд╢рди рдХреЗ рджреЛрдиреЛрдВ рдСрдкрд░реЗрдВрдб рдкрд╛рд╕ рдХрд░реЗрдВ, PyNumber_Subtract рдХреЛ рджреЛрдиреЛрдВ PyNumber_Subtract рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ Py_DECREF (рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ Py_DECREF ), PyNumber_Subtract рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдорд╛рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ DISPATCH рдирд╣реАрдВ NULL ред So. рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рдЕрднреА рднреА рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдмрд╕реЗ рдХрдо рд╕реНрддрд░ рдкрд░ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдШрдЯрд╛рдирд╛ рдЖрдорддреМрд░ рдкрд░ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрдХрд╛рдо рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдореЗрдВ рд╣рдореЗрдВ рд▓рдЧрднрдЧ рдбреЗрдврд╝ рд╣рдЬрд╝рд╛рд░ рд╢рдмреНрдж рд▓рдЧреЗ!

рдлрд╝реНрд░реЗрдо рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, PyRun_SimpleStringFlags рдкреВрд░рд╛ рдХреЛрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╕рдлрд╛рдИ рдХрд░рддрд╛ рд╣реИ (рд╣рдо Py_Finalize рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди Py_Finalize ), libc ( Py_Finalize , рдЖрджрд┐) Py_Finalize рд╣реИ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдХрд╛рдлреА рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдкрд╛рдпрдерди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдПрдХ рдиреАрдВрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╢рдмреНрдж рд╣реИрдВ: рджреБрднрд╛рд╖рд┐рдпрд╛, рд╕реНрдЯреНрд░реАрдо рдХреА рд╕реНрдерд┐рддрд┐, рдиреЗрдорд╕реНрдкреЗрд╕, рдореЙрдбреНрдпреВрд▓, рдмрд┐рд▓реНрдЯ-рдЗрди рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЪрд░, рдХреЛрдб рдФрд░ рдлрд╝реНрд░реЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ, рдФрд░ рдЙрди рдЕрд╕реНрдкрд╖реНрдЯ рд╢рдмреНрджреЛрдВ DECREF рдФрд░ DISPATCH рд╕реЗ BINARY_SUBTRACT рд╣реИрдВрдбрд▓рд░ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг "рдкреНрд░реЗрдд" рд╢рдмреНрдж рднреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдШреВрдорддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕реЗ рдирд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ - рдПрдХ рд╡рд╕реНрддреБ ред CPython рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд┐рд╕реНрдЯрдо рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЕрдЧрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд░рд╣реЗрдВред

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

рд╣рдорд╕реЗ рдЬреБрдбрд╝реЗрдВ , рдмреБрд░реНрдХрд╛ рдореЗрдВ рдЖрдУ! рд╣рдо рдПрдХ рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЬреНрдЮрд╛рди рд╕реАрдЦреЗрдВрдЧреЗ рдФрд░ рд╢рд╛рдВрдд рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред

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


All Articles