рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА C рдпрд╛ C ++ рдЬреИрд╕реА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рд╡реЗ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рдиреМрд╕рд┐рдЦрд┐рдпреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ - рдФрд░ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдмрдЧреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрдХреЗрдд рд╣реИрдВ, рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдирдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рд╕реА рдФрд░ рд╕реА ++ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╡реЗ рдЪрд░ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдореЗрдореЛрд░реА рдкрддреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рдЕрдиреНрдп рдЪрд░ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдкреЙрдЗрдВрдЯрд░реНрд╕ рдкрд░ рдмреНрд░рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣
рд╕рдореАрдХреНрд╖рд╛ рдкрдврд╝реЗрдВред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдкрд╛рдпрдерди рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭреЗрдВрдЧреЗ рдФрд░ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдореМрдЬреВрдж рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмреБрд░реЗ рд╕рдкрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЙрдирдХрд╛ рдЕрдиреБрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде, рдЖрдк:
- рдЬрд╛рдиреЗрдВ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрдХреЗрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВред
- рдкрд╛рдпрдерди рдореЗрдВ рд╕реА рдЪрд░ рдФрд░ рдирд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдЬрд╛рдиреЗрдВред
- рдкрд╛рдпрдерди рдореЗрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред
- рд╡рд╛рд╕реНрддрд╡рд┐рдХ
ctypes
рд╕рд╛рде рдкреНрд░рдпреЛрдЧ ctypes
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдиреЛрдЯ : рдпрд╣рд╛рдБ, рд╢рдмреНрдж "рдкрд╛рдпрдерди" рдХреЛ C рдореЗрдВ рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ CPython рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рднрд╛рд╖рд╛ рдЙрдкрдХрд░рдг рдХреА рд╕рднреА рдЪрд░реНрдЪрд╛рдПрдБ CPython 3.7 рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдХреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрдХреЗрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВ?
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХреНрдпрд╛ рдкрд╛рдпрдерди рдореВрд▓ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ? рд╢рд╛рдпрдж, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рд╣реИ,
рдмрд┐рдВрджреБрдУрдВ рдиреЗ рдкрд╛рдпрдерди рдХреЗ
рдЬрд╝реЗрди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд▓реЛрдЧреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рднрдбрд╝рдХрд╛рддреЗ рд╣реИрдВред рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЕрдХреНрд╕рд░ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдЖрдкрдХреЛ рдЕрд╕рдлрд▓ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрддрд░рдирд╛рдХ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдкрдврд╝рдирд╛, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕реЗ рдирд╣реАрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд╛рдпрдерди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдореГрддрд┐ рдкрддрд╛ред рдЕрдХреНрд╕рд░ рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ, рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдкрд░ рдЬреЛрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧрддрд┐ рдкрд░ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП рдкрд╛рдЗрдерди рдореЗрдВ рд╕рдВрдХреЗрдд рдмрд╣реБрдд рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреЗред рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рднрд╛рд╖рд╛ рдЖрдкрдХреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрдХреЗрдд рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рднрд╛рд╖рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЬрд╛рдПрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдкрд░рд╕реНрдкрд░ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ рдХреНрдпрд╛ рд╣реИрдВред
- рдкрд╛рдЗрдерди рдореЗрдВ рдЪрд░ / рдирд╛рдо рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рд╕реНрдореГрддрд┐ рдкрддреЛрдВ рдХреЛ рдкрдХрдбрд╝реЛ, рдЪрд▓реЛ рдЪрд▓реЗрдВ!
рдкрд╛рдпрдерди рдореЗрдВ рд╡рд╕реНрддреБрдПрдБ
рдЕрдЬрдЧрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, REPL рдЦреЛрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рд╕
isinstance()
:
>>> isinstance(1, object) True >>> isinstance(list(), object) True >>> isinstance(True, object) True >>> def foo(): ... pass ... >>> isinstance(foo, object) True
рдпрд╣ рдХреЛрдб рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВ:
- рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ред
- рдЯрд╛рдЗрдк рдХрд░реЗрдВред
- рдорд╛рдиред
рдореЗрдореЛрд░реА рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдХ рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг
рдкрд╛рдпрдерди рдореЗрдВ
рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ CPython рд╕реНрддрд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдорд╛рди рд╡рд╕реНрддреБ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рд╣реИред
рд▓реЗрдХрд┐рди рд╕рднреА рд╡рд╕реНрддреБрдПрдВ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИ: рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рд╕реНрдкрд░ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдирд╛ рдЖрдкрдХреЛ рдкреНрдпрд╛рдЬ рдХреА рдкрд╣рд▓реА рдкрд░рдд рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ "рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрдХреЗрдд" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ
рдкрд╛рдпрдерди рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВ:
- рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдВ (рдмрджрд▓реА рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреА);
- рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡рд╕реНрддреБрдПрдБ (рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрдзреАрди)ред
рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдкрд╛рдпрдерди рдореЗрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рджреБрдирд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рдХреА рдкрд╣рд▓реА рдХреБрдВрдЬреА рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЕрдкрд░рд┐рд╣рд╛рд░реНрдпрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВред рдЖрдк рдХреБрдЫ рдкрд╛рдпрдерди рдХреЛрдб рд▓рд┐рдЦрдХрд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
id()
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ;
- рдпрджрд┐ рд░рд┐рдЯрд░реНрди
True
рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд░ рджреЛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рдорд╛рди рдореЗрдореЛрд░реА рдкрддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ REPL рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
>>> x = 5 >>> id(x) 94529957049376
рдпрд╣рд╛рдВ рд╣рдо рдЪрд░
x
рдХреЛ
5
рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдорд┐рд▓реЗрдЧреА:
>>> x += 1 >>> x 6 >>> id(x) 94529957049408
рдпрджреНрдпрдкрд┐ рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреЗрд╡рд▓
x
рдХрд╛ рдорд╛рди рдмрджрд▓рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдЙрддреНрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ
рдирдИ рд╡рд╕реНрддреБ рдорд┐рд▓ рд░рд╣реА рд╣реИред
str
рдкреНрд░рдХрд╛рд░ рднреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ:
>>> s = "real_python" >>> id(s) 140637819584048 >>> s += "_rocks" >>> s 'real_python_rocks' >>> id(s) 140637819609424
рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж
s
+=
рдХреЛ рдПрдХ
рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИред
рдмреЛрдирд╕ :
+=
рдСрдкрд░реЗрдЯрд░ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд┐ рдХреЙрд▓реЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред
рдХреБрдЫ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реВрдЪреА,
+=
__iadd__()
(рд╕реНрдерд╛рдиреАрдп рдкрд░рд┐рд╢рд┐рд╖реНрдЯ) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреА рд╣реИред рдпрд╣ рдЦреБрдж рд╣реА рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЙрд╕реА рдЖрдИрдбреА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐,
str
рдФрд░
int
рдореЗрдВ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк
__add__()
рдмрдЬрд╛рдп
__add__()
рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди
рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ редрдЬрдм рд╣рдо рд╕реАрдзреЗ
s
рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ
s
рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
>>> s[0] = "R"
рдмреИрдХ рдЯреНрд░реЗрд╕ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВ):
File "<stdin>", line 1, in <mdule> TypeError: 'str' object does not support item assignment
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреНрд░реИрд╢ рдФрд░ рдкрд╛рдпрдерди рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐
str
рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рдХрд╛рд░
str
рдХреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде, рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ:
>>> my_list = [1, 2, 3] >>> id(my_list) 140637819575368 >>> my_list.append(4) >>> my_list [1, 2, 3, 4] >>> id(my_list) 140637819575368
рдпрд╣ рдХреЛрдб рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ,
my_list
рдкрд╛рд╕ рдПрдХ рдЖрдИрдбреА рд╣реИред рд╕реВрдЪреА рдореЗрдВ
4
рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рднреА,
my_list
рдЕрднреА рднреА
рд╕рдорд╛рди рдЖрдИрдбреА рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк
list
рдкрд░рд╕реНрдкрд░ рд╣реИред
рдпрд╣рд╛рдВ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХрд╛ рдПрдХ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╣реИ:
>>> my_list[0] = 0 >>> my_list [0, 2, 3, 4] >>> id(my_list) 140637819575368
рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдордиреЗ
my_list
рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ
0
рд╕реЗрдЯ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рд╕реВрдЪреА рдиреЗ рдЙрд╕реА рдЖрдИрдбреА рдХреЛ рдмрдирд╛рдП рд░рдЦрд╛ред
рдкрд╛рдпрдерди рд╕реАрдЦрдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдЧ рдкрд░ рдЕрдЧрд▓рд╛ рдХрджрдо рдЗрд╕рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдо рдЪрд░ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ
рдкрд╛рдпрдерди рдореЗрдВ рдЪрд░ C рдФрд░ C ++ рдореЗрдВ рдЪрд░ рд╕реЗ рдореВрд▓рднреВрдд рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рд╡реЗ рд╕рд┐рд░реНрдл рдкрд╛рдпрдерди рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред
рдЪрд░реЛрдВ рдХреА рдЬрдЧрд╣ рдирд╛рдо рд╣реИрдВ ред
рдпрд╣ рдкрд╛рдВрдбрд┐рддреНрдп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдЖрдк рдкрд╛рдпрдерди рдореЗрдВ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдо рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрдм рдЖрдк рдРрд╕реЗ рдХрдард┐рди рд╡рд┐рд╖рдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрдХреЗрддред
рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реА рдореЗрдВ рдЪрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдХреНрдпрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд╛рдпрдерди рдореЗрдВ рдирд╛рдореЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВред
рдЪрд░ рдореЗрдВ рд╕реА
рдЪрд░
x
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд▓реЗрдВ:
int x = 2337;
рдЗрд╕ рдЫреЛрдЯреА рд░реЗрдЦрд╛ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
- рдПрдХ рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ред
- рдЗрд╕ рд╕реНрдореГрддрд┐ рд╕реНрдерд╛рди рдХреЛ
2337
рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред
- рдореИрдкрд┐рдВрдЧ рдЬреЛ
x
рдЗрд╕ рдорд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕реНрдореГрддрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:

рдпрд╣рд╛рдВ, рдЪрд░
x
рдореЗрдВ
0x7f1
рдХрд╛ рдирдХрд▓реА рдкрддрд╛ рдФрд░
2337
рдорд╛рди рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ
x
рдХрд╛ рдорд╛рди рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
x = 2338;
рдпрд╣ рдХреЛрдб рдЪрд░
x
2338
рдирдП рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ
рдкрд┐рдЫрд▓реЗ рдорд╛рди рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪрд░
x
рдкрд░рд╕реНрдкрд░ рд╣реИ ред рдирдП рдорд╛рди рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрд┐рдд рд╕реНрдореГрддрд┐ рдпреЛрдЬрдирд╛:

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

рдирдП рд╕реНрдерд╛рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
y
-
0x7f5
ред рдпрджреНрдпрдкрд┐ рдорд╛рди
x
рдХреЛ
x
рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЪрд░
y
рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдирдпрд╛ рдкрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдк
x
рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛
y
рдХреЗ рдореВрд▓реНрдп рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
y = 2339;
рдЕрдм рдореЗрдореЛрд░реА рд╕рд░реНрдХрд┐рдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ: рдЖрдкрдиреЗ
y
рдХрд╛ рдорд╛рди рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рди рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдиреЗ рдореВрд▓ рдЪрд░
x
рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдкрд╛рдпрдерди рдореЗрдВ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред
рдкрд╛рдпрдерди рдореЗрдВ рдирд╛рдо
рдкрд╛рдЗрдерди рдореЗрдВ рдХреЛрдИ рдЪрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдирд╛рдо рд╣реИрдВред рдЖрдк рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХрд╛рдиреБрд╕рд╛рд░ "рдЪрд░" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЪрд░ рдФрд░ рдирд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЖрдЗрдП рдЙрдкрд░реЛрдХреНрдд C рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рдорд╛рди рдХреЛрдб рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ Python рдореЗрдВ рд▓рд┐рдЦреЗрдВ:
>>> x = 2337
рд╕реА рдореЗрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдб рдЗрд╕ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ:
- PyObject рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
- PyObject рдХреЗ рд▓рд┐рдП рдирдВрдмрд░ рдХреЛ рдПрдХ рдЯрд╛рдЗрдкрдмреЙрдХреНрд╕ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
2337
PyObject рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
x
рдирд╛рдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИредx
рдирдП PyObject рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред- PyObject рдХреА рд╕рдВрджрд░реНрдн рдЧрдгрдирд╛ 1 рд╕реЗ рдмрдврд╝рд╛рдИ рдЧрдИ рд╣реИред
рдиреЛрдЯ :
PyObject Python рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЗрдХрд╛рдИ CPython рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдФрд░ рд╕рднреА Python рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
PyObject рдХреЛ рдПрдХ C- рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЖрд╢реНрдЪрд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╕реАрдзреЗ рдЯрд╛рдЗрдкрдмреЙрдХреНрд╕ рдпрд╛ рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдХреЙрд▓ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрд░рдЪрдирд╛рдУрдВ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред
Sys.getrefcount () рдЬреИрд╕реА
рдХреЙрд▓рд┐рдВрдЧ рдкрджреНрдзрддрд┐рдпрд╛рдБ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдВрддрд░рд┐рдХ рд╕рд╛рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВред
рдпрджрд┐ рд╣рдо рд╕реНрдореГрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

рдпрд╣рд╛рдБ, рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП C рдореЗрдВ рд╕рд░реНрдХрд┐рдЯ рд╕реЗ рдореЗрдореЛрд░реА рд╕рд░реНрдХрд┐рдЯ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИред
2337
рдорд╛рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдореГрддрд┐ рдХрд╛ рдПрдХ рдЦрдВрдб рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирдпрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдореГрддрд┐ рдХрд╛ рд╕реНрд╡рд╛рдореА рд╣реИ рдЬреЛ
2337
рд░рд╣рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдирд╛рдо
x
рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕реАрдзреЗ
рдХрд┐рд╕реА рднреА рдкрддреЗ рдХрд╛ рдорд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реА рд╡реИрд░рд┐рдПрдмрд▓ рдПрдХ рд╕реНрдерд┐рд░ рд╕реЗрд▓ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред
рдпрджрд┐ рдЖрдк
x
рдирдпрд╛ рдорд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рдЖрдЬрд╝рдорд╛рдПрдБ:
>>> x = 2338
рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реА рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╛рдпрдерди рдореЗрдВ рдореВрд▓ рдмрд╛рдБрдз рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдХреЛрдб рдореЗрдВ:
- рдПрдХ рдирдпрд╛ PyObject рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
- PyObject рдХреЗ рд▓рд┐рдП рдирдВрдмрд░ рдХреЛ рдПрдХ рдЯрд╛рдЗрдкрдмреЙрдХреНрд╕ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
2
PyObject рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
x
рдирдП PyObject рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред
- рдирдП PyObject рдХреА рд╕рдВрджрд░реНрдн рдЧрдгрдирд╛ 1 рд╕реЗ рдмрдврд╝рд╛рдИ рдЧрдИ рд╣реИред
- рдкреБрд░рд╛рдиреЗ PyObject рдХреА рд╕рдВрджрд░реНрдн рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рдХрдо рд╣реЛ рдЧрдИ рд╣реИред
рдЕрдм рдореЗрдореЛрд░реА рд╕рд░реНрдХрд┐рдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдпрд╣ рдЪрд┐рддреНрд░рдг рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐
x
рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдорд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реИред рдЖрдк рдпрд╣ рднреА рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд╛рдВрдб
x = 2338
рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд▓рд┐рдВрдХ рдХреЗ рдирд╛рдо
x
рдХрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд┐рдЫрд▓реА рдСрдмреНрдЬреЗрдХреНрдЯ (рдорд╛рди
2337
рдпреБрдХреНрдд) рдЕрдм 0 рдХреА рд╕рдВрджрд░реНрдн рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдореЗрдВ рд╣реИ, рдФрд░
рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдПрдХ рдирдпрд╛ рдирд╛рдо
y
рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ C рдЙрджрд╛рд╣рд░рдг рдореЗрдВ:
>>> y = x
рдПрдХ рдирдпрд╛ рдирд╛рдо рд╕реНрдореГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рдирдИ рд╡рд╕реНрддреБ:

рдЕрдм рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдирдпрд╛ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ
рдирд╣реАрдВ рдмрдирд╛рдпрд╛
рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдирдпрд╛ рдирд╛рдо рдмрдирд╛рдпрд╛
рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЙрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ 1. рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред рдЖрдк рдЙрдирдХреА рдкрд╣рдЪрд╛рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА рддреБрд▓реНрдпрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
>>> y is x True
рдпрд╣ рдХреЛрдб рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐
x
рдФрд░
y
рдПрдХ рд╡рд╕реНрддреБ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЛрдИ рдЧрд▓рддреА рди рдХрд░реЗрдВ:
y
рдЕрднреА рднреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк
y
рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
>>> y += 1 >>> y is x False
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдПрдХ рдирдпрд╛ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдВрдЧреЗред рдЕрдм рд╕реНрдореГрддрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдФрд░
y
рдЕрдм рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕реАрдзреЗ рд╕реАрдзреЗ
y
рд╕реЗ
2339
рддреЛ рд╣рдореЗрдВ рд╡рд╣реА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдорд┐рд▓реЗрдЧреАред
>>> y = 2339
рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реНрдореГрддрд┐ рдХреА рдРрд╕реА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрд╛рд▓рди рдореЗрдВред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдЖрдк рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд╛рдореЛрдВ рдХреЛ рд▓рд┐рдВрдХ рд╕реЗ рдмрд╛рдВрдзрддреЗ рд╣реИрдВред
рдкрд╛рдпрдерди рдореЗрдВ рдЗрдВрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЕрдм рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдирдИ рд╡рд╕реНрддреБрдПрдВ рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЙрдирд╕реЗ рдХреИрд╕реЗ рдирд╛рдо рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдкрд╛рдпрдерди рдХреЛрдб рд╣реИ:
>>> x = 1000 >>> y = 1000 >>> x is y True
рдкрд╣рд▓реЗ рдХреА рддрд░рд╣,
x
рдФрд░
y
рд╕рдорд╛рди рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдо рд╣реИрдВред рд▓реЗрдХрд┐рди
1000
рдорд╛рди рд╡рд╛рд▓реЗ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рджреЛ рдирдВрдмрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ 1000 рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдкрддрд╛ рдорд┐рд▓реЗрдЧрд╛:
>>> x = 1000 >>> y = 499 + 501 >>> x is y False
рдЗрд╕ рдмрд╛рд░, рд╕реНрдЯреНрд░рд┐рдВрдЧ
x is y
рд░рд┐рдЯрд░реНрди
False
ред рдЕрдЧрд░ рдЖрдк рд╢рд░реНрдорд┐рдВрджрд╛ рд╣реИрдВ, рддреЛ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рдЗрд╕ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
- рдПрдХ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (
1000
)ред
- рдЗрд╕реЗ
x
рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдПрдХ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (
499
)ред
- рдПрдХ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (
501
)ред
- рдЗрди рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
- рдПрдХ рдирдпрд╛ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (
1000
)ред
- рдЙрд╕реЗ
y
рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддрдХрдиреАрдХреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг : рд╡рд░реНрдгрд┐рдд рдЪрд░рдг рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕ рдХреЛрдб рдХреЛ рдЖрд░рдИрдкреАрдПрд▓ рдХреЗ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВ, рдлрд┐рд░ рд▓рд╛рдЗрди
x is y
,
True
рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╕реАрдкреАрдереЙрди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рддреНрд╡рд░рд┐рдд рдмреБрджреНрдзрд┐ рд╣реИ, рдЬреЛ рдХрд┐
рдкреАрдкрд▓рд╣реЛрд▓реНрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдЪрд░рдгреЛрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг
рдкрд╛реЕрдлреЛрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд░ рд╕реАрдкреАрдереЙрди рдХреЗ
рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд╣ рдмреЗрдХрд╛рд░ рдирд╣реАрдВ рд╣реИ? рдареАрдХ рд╣реИ, рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдЖрдк рдкрд╛рдпрдерди рдХреЗ рд╕рднреА рдорд╣рд╛рди рд▓рд╛рднреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреАрдордд рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдРрд╕реА рдордзреНрдпрд╡рд░реНрддреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ! рдордЬрд╝рд╛рдХ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рдСрдкрд░реЗрд╢рди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрд▓реНрджреА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЙрд╕ рдкрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред
рдкрд╛рдпрдерди рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рд╕рдордЭрджрд╛рд░реА рд╕реЗ рдЗрд╕ рдУрд╡рд░рд╣реЗрдб рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдХрдИ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЙрдирдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬреЛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
>>> x = 20 >>> y = 19 + 1 >>> x is y True
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЛрдб рд▓рдЧрднрдЧ рдКрдкрд░ рдЬреИрд╕рд╛ рд╣реА рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╣рдореЗрдВ
True
рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдирдЬрд░рдмрдВрдж рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдкрд╛рдпрдерди рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдк-рд╕рдореВрд╣ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ? CPython 3.7 рдореЗрдВ, рдкреНрд░рд╢рд┐рдХреНрд╖реБ рд╣реИрдВ:
-5
рд╕реЗ 256
рддрдХ рдХреЗ 256
ред
- рдХреЗрд╡рд▓ ASCII рдЕрдХреНрд╖рд░, рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ред
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдЪрд░ рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрдВрдЯрд░реНрдирд┐рдВрдЧ рдХрд░рдХреЗ, рдкрд╛рдпрдерди рд▓рдЧрд╛рддрд╛рд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
рдЖрдХрд╛рд░ рдореЗрдВ 20 рд╕реЗ рдХрдо рд╡рд░реНрдгреЛрдВ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдФрд░ ASCII рдЕрдХреНрд╖рд░, рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
>>> s1 = "realpython" >>> id(s1) 140696485006960 >>> s2 = "realpython" >>> id(s2) 140696485006960 >>> s1 is s2 True
рдпрд╣рд╛рдБ
s1
рдФрд░
s2
рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕рдорд╛рди рдкрддреЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдПрдХ ASCII рдкрддреНрд░, рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдирд╣реАрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛:
>>> s1 = "Real Python!" >>> s2 = "Real Python!" >>> s1 is s2 False
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдмрд┐рдВрджреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрд╛рд░ рдХреЛ рдирдЬрд░рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред
рдмреЛрдирд╕ : рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╡рд╕реНрддреБрдПрдВ рдЙрд╕реА рдЖрдВрддрд░рд┐рдХ рд╡рд╕реНрддреБ рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ рдЖрдк
sys.intern()
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:
рд╢рдмреНрджрдХреЛрд╢ рдЦреЛрдЬ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдереЛрдбрд╝реА рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЯрд░реНрдирд┐рдВрдЧ рдЙрдкрдпреЛрдЧреА рд╣реИ: рдпрджрд┐ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдХреБрдВрдЬреА рдФрд░ рдЦреЛрдЬ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреБрдВрдЬреА рдХреЛ рдирдЬрд░рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреБрдВрдЬреА рддреБрд▓рдирд╛ (рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рдж) рддрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдмрд┐рдВрджреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред ( рд╕реНрд░реЛрдд )
рдкреНрд░рд╢рд┐рдХреНрд╖рдХ рдЕрдХреНрд╕рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдмрд╕ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕рдВрджреЗрд╣ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛
id()
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рдпрдерди рдкреЙрдЗрдВрдЯрд░ рдЗрдореНрдпреВрд▓реЗрд╢рди
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рд▓рд╛рдн рдирд╣реАрдВ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рдпрдерди рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
- рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреИрдпрд╛рд░ рдкрд╛рдпрдерди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдореНрдпреВрдЯреЗрдмрд▓ рдЯрд╛рдЗрдк рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдпрд╣ рдЙрдирдХреА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣реИ рдХрд┐ рд╣рдо рд╕рдВрдХреЗрдд рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
void add_one(int *x) { *x += 1; }
рдпрд╣ рдХреЛрдб рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ (
*x
) рддрдХ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 1 рд╕реЗ рдореВрд▓реНрдп рдмрдврд╝рд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИ:
рдЙрдкрд░реЛрдХреНрдд рдЦрдВрдб рдореЗрдВ, рд╣рдордиреЗ
y
рдХреЛ
2337
рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛, рд╡рд░реНрддрдорд╛рди рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛, рдЗрд╕реЗ 1 рд╕реЗ рдмрдврд╝рд╛рдпрд╛, рдФрд░ рдлрд┐рд░ рдПрдХ рдирдпрд╛ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
y = 2337 y = 2338
рдкрд╛рдпрдерди рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдПрдХ рдкрд░рд╕реНрдкрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реВрдЪреА рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдФрд░ рдкрд╣рд▓рд╛ рддрддреНрд╡ рдмрджрд▓реЗрдВ:
>>> def add_one(x): ... x[0] += 1 ... >>> y = [2337] >>> add_one(y) >>> y[0] 2338
рдпрд╣рд╛рдБ
add_one(x)
рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ 1 рд╕реЗ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИред рддреЛ рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрдХреЗрдд рд╣реИрдВ? рдирд╣реАрдВред рд╡рд░реНрдгрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪреА рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддреА рдкреНрд░рдХрд╛рд░ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдЯрдкрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
>>> z = (2337,) >>> add_one(z)
рдмреИрдХ рдЯреНрд░реЗрд╕ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо рдЪрд▓рддреЗ рд╣реИрдВ):
File "<stdin>", line 1, in <module> File "<stdin>", line 2, in add_one TypeError: 'tuple' object does not support item assignment
рдпрд╣ рдХреЛрдб рдЯрдкрд▓ рдХреА рдЕрдкрд░рд┐рд╣рд╛рд░реНрдпрддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддрддреНрд╡ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
list
рдХреЗрд╡рд▓ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рд╣рд┐рд╕реНрд╕рд╛ рд╕реВрдЪрдХ рднреА рддрд╛рдирд╛рд╢рд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рдШрдЯрдирд╛рдУрдВ рдХреА рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдиреЗ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
>>> counters = {"func_calls": 0} >>> def bar(): ... counters["func_calls"] += 1 ... >>> def foo(): ... counters["func_calls"] += 1 ... bar() ... >>> foo() >>> counters["func_calls"] 2
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
foo()
рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
foo()
рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ рдЙрдореНрдореАрдж рдХреЗ
foo()
2 рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИред рдФрд░ рд╕рднреА
dict
рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдордд рднреВрд▓реЛ, рдпрд╣ рдХреЗрд╡рд▓ рд╕реВрдЪрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдПрдХ
рдЕрдиреБрдХрд░рдг рд╣реИ, рдЗрд╕рдХрд╛ рд╕реА рдФрд░ рд╕реА ++ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдХреЗрдд рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИ рдЕрдЧрд░ рд╡реЗ рд╕реА рдпрд╛ рд╕реА ++ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдереЗред
рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдкрд╛рдЗрдерди рдореЗрдВ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
dict
рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕ рдкреНрд░рдореБрдЦ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдХрд╕реНрдЯрдо рдкрд╛рдпрдерди рд╡рд░реНрдЧ рдпрд╣рд╛рдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореАрдЯреНрд░рд┐рдХ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд╖реНрдЯрдкреНрд░рдж рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рд╣реИ:
class Metrics(object): def __init__(self): self._metrics = { "func_calls": 0, "cat_pictures_served": 0, }
рдпрд╣ рдХреЛрдб
Metrics
рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдЕрдк-рдЯреВ-рдбреЗрдЯ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐
_metrics
рд╕рджрд╕реНрдп
_metrics
рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдЕрдм рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрди рдореВрд▓реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class Metrics(object):
рдпрд╣рд╛рдБ рд╣рдо
@property рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдирдП рд╣реИрдВ, рддреЛ
рдкрд╛рдпрдерди рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рд▓реЗрдЦ
рдкрд░ рдкреНрд░рд╛рдЗрдорд░ рдкрдврд╝реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
@property
рдбреЗрдХреЛрд░реЗрдЯрд░ рдЖрдкрдХреЛ
func_calls
рдФрд░
cat_pictures_served
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдереЗ:
>>> metrics = Metrics() >>> metrics.func_calls 0 >>> metrics.cat_pictures_served 0
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрди рдирд╛рдореЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рддрдереНрдп рд╕реЗ рдЕрдореВрд░реНрдд рд╣реИрдВ рдХрд┐ рдпреЗ рдорд╛рди рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдореЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
class Metrics(object):
:
inc_func_calls()
inc_cat_pics()
metrics
. , , :
>>> metrics = Metrics() >>> metrics.inc_func_calls() >>> metrics.inc_func_calls() >>> metrics.func_calls 2
func_calls
inc_func_calls()
Python. , -
metrics
, .
: ,
inc_func_calls()
inc_cat_pics()
@property.setter
int
, .
Metrics
:
class Metrics(object): def __init__(self): self._metrics = { "func_calls": 0, "cat_pictures_served": 0, } @property def func_calls(self): return self._metrics["func_calls"] @property def cat_pictures_served(self): return self._metrics["cat_pictures_served"] def inc_func_calls(self): self._metrics["func_calls"] += 1 def inc_cat_pics(self): self._metrics["cat_pictures_served"] += 1
ctypes
, - Python, CPython? ctypes , C. ctypes,
Extending Python With C Libraries and the ┬лctypes┬╗ Module .
, , . -
add_one()
:
void add_one(int *x) { *x += 1; }
,
x
1. , (shared) . ,
add.c
, gcc:
$ gcc -c -Wall -Werror -fpic add.c $ gcc -shared -o libadd1.so add.o
C
add.o
.
libadd1.so
.
libadd1.so
. ctypes Python:
>>> import ctypes >>> add_lib = ctypes.CDLL("./libadd1.so") >>> add_lib.add_one <_FuncPtr object at 0x7f9f3b8852a0>
ctypes.CDLL ,
libadd1
.
add_one()
, , Python-. , . Python , .
, ctypes :
>>> add_one = add_lib.add_one >>> add_one.argtypes = [ctypes.POINTER(ctypes.c_int)]
, C. , , :
>>> add_one(1) Traceback (most recent call last): File "<stdin>", line 1, in <module> ctypes.ArgumentError: argument 1: <class 'TypeError'>: \ expected LP_c_int instance instead of int
Python ,
add_one()
, . , ctypes . :
>>> x = ctypes.c_int() >>> x c_int(0)
x
0
. ctypes
byref()
, .
:
.
, . , .
add_one()
:
>>> add_one(ctypes.byref(x)) 998793640 >>> x c_int(1)
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! 1. , Python .
рдирд┐рд╖реНрдХрд░реНрд╖
Python . , Python.
Python:
Python .