CPython (рдФрд░ PyPy) рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рдХреБрдЫ рдЕрдВрд╢

рдкрд╛рдпрдерди рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗрд╡рд▓ рдмрд╛рд▓реНрдЯреА рдФрд░ рдирд┐рдЬреА рд╣реИрд╢рд┐рдВрдЧ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд╛рдЭрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ, рд╣реИрд╢ рдХреИрд╢рд┐рдВрдЧ, DKIX_DUMMY рдФрд░ рддреНрд╡рд░рд┐рдд рддреБрд▓рдирд╛рдУрдВ рдХреА рдПрдХ рдЕрджреНрднреБрдд рджреБрдирд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдФрд░ рднреА рддреЗрдЬрд╝реА рд╕реЗ (рдмрдЧ рдХреА рдХреАрдордд рдкрд░ 2 ^ -64 рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде) рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреЛ рд▓реЛрдЧ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд╡реЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдФрд░ рддрд╛рдЬрд╛ рдЬрд╛рдирдХрд╛рд░реА рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрд╛рд▓реНрдЯреА рдФрд░ рдмрдВрдж рд╣реИрд╢рд┐рдВрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдЦ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред

CPython рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рд╣рд░ рдЬрдЧрд╣ рд╣реИрдВ, рдХрдХреНрд╖рд╛рдПрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░, kwargs рдкреИрд░рд╛рдореАрдЯрд░ рдЙрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдмрдирд╛рддрд╛ рд╣реИ , рднрд▓реЗ рд╣реА рдЖрдк рд╕реНрд╡рдпрдВ рдХрд┐рд╕реА рднреА рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдХреЛ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗред рд▓реЗрдХрд┐рди рдХрдИ рд▓рд╛рдЧреВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдЬрд╛рд░реА рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рднрд┐рдиреНрди рдЪрд╛рд▓ рдореЗрдВ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред

рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╣рд╢реНрдорд╛рдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)


рдпрджрд┐ рдЖрдк рдорд╛рдирдХ рд╣рд╢реНрдорд╛рдк рдФрд░ рдирд┐рдЬреА рд╣реИрд╢рд┐рдВрдЧ рдХреЗ рдХрд╛рдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдЧрд▓реЗ рдЕрдзреНрдпрд╛рдп рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╢рдмреНрджрдХреЛрд╖ рд╕рд░рд▓ рд╣реИ: рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдПред



рд╣рдо рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдП рдЧрдП рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕рд░рдгреА рдХреЗ рдСрдлрд╝рд╕реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛ рдорд┐рд▓рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рдореЗрд▓ рдкрддреЗ рдкрд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП?

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

рдпрджрд┐ рд╣рдо рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЦреЛрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд░реЗрдЦреАрдп рдЦреЛрдЬ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рдЖ рд╕рдХрддреА рд╣реИред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╣реИрд╢ рдХреЗ рд╢реЗрд╖ рднрд╛рдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рдореБрдЦ рд╣реИред



рдирддреАрдЬрддрди, рдПрдХ рд░реЗрдЦреАрдп рдЦреЛрдЬ рдкреВрд░реЗ рдмрдбрд╝реЗ рд╕рд░рдгреА рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред

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



рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрд╢рд┐рдВрдЧ рдХреЛ рдирд┐рдЬреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдХреБрдЫ рдореБрдлреНрдд рдХреЛрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдЦреЛрдЬ рдПрдХ рд░реИрдЦрд┐рдХ рдПрдХ рдореЗрдВ рдкрддрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдЦрддрд░рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рдЬреАрдд рдЦреЛ рджреЗрдВрдЧреЗ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рджреБрднрд╛рд╖рд┐рдпрд╛ рднрд░рд╛ рд╣реБрдЖ 1/2 / 2/3 рд╕рд░рдгреА рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдореБрдХреНрдд рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рджреЛ рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рдФрд░ рдкреБрд░рд╛рдиреЗ рд╕реЗ рддрддреНрд╡ рдПрдХ рд╕рдордп рдореЗрдВ рдирдП рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

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

рдкрд╛рдпрдерди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд╡рд┐рдзрд╛рдПрдБ


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

рд╢рдмреНрджрдХреЛрд╢ рддрддреНрд╡ рдХреА рд╕рдВрд░рдЪрдирд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ:

typedef struct { Py_hash_t me_hash; //  PyObject *me_key; //    PyObject *me_value; //     } PyDictKeyEntry; 

рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ PyDict_MINSIZE рдирд┐рд░рдВрддрд░ рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ 8. рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЦрд╛рд▓реА рдЖрдХрд╛рд░ рдФрд░ рд╕рд░рдгреА рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реНрдореГрддрд┐ рдЕрдкрд╡реНрдпрдп рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдЖрдХрд╛рд░ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рддреЗ рд╕рдордп (рд╕рдВрд╕реНрдХрд░рдг 3.6 рддрдХ), рдЖрдкрдХреЛ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдиреНрдпреВрдирддрдо 8 рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ * 24 рдмрд╛рдЗрдЯреНрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ = 192 рдмрд╛рдЗрдЯреНрд╕ (рдпрд╣ рд╢реЗрд╖ рдлрд╝реАрд▓реНрдб рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ: рд╢рдмреНрджрдХреЛрд╢ рдЪрд░ рдХреА рд▓рд╛рдЧрдд рд╣реА, рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдХрд╛рдЙрдВрдЯрд░, рдЖрджрд┐)

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

рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЕрдзрд┐рдХрддрдо "рд▓реЛрдбрд┐рдВрдЧ" рд╕рд░рдгреА рдХреЗ рд╡рд░реНрддрдорд╛рди рдЖрдХрд╛рд░ рдХрд╛ 2/3 рд╣реИред

 #define USABLE_FRACTION(n) (((n) << 1)/3) 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╣рд▓рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рддрдм рд╣реЛрдЧрд╛ рдЬрдм 6 рд╡реЗрдВ рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд░рд▓ рд╕рд░рдгреА рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рдмрдЬрд╛рдп:

  d = {'timmy': 'red', 'barry': 'green', 'guido': 'blue'} # -> entries = [['--', '--', '--'], [-8522787127447073495, 'barry', 'green'], ['--', '--', '--'], ['--', '--', '--'], ['--', '--', '--'], [-9092791511155847987, 'timmy', 'red'], ['--', '--', '--'], [-6480567542315338377, 'guido', 'blue']] 

рд╕рдВрд╕реНрдХрд░рдг 3.6 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЖрдпреЛрдЬрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  indices = [None, 1, None, None, None, 0, None, 2] entries = [[-9092791511155847987, 'timmy', 'red'], [-8522787127447073495, 'barry', 'green'], [-6480567542315338377, 'guido', 'blue']] 

рдпрд╛рдиреА рдХреЗрд╡рд▓ рд╡реЗ рд░рд┐рдХреЙрд░реНрдб рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЕрд▓рдЧ рд╕рд░рдгреА рдореЗрдВ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдХреЗрд╡рд▓ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЛ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╢реБрд░реВ рдореЗрдВ рд╕рд░рдгреА 192 рдмрд╛рдЗрдЯреНрд╕ рд▓реЗрддреА рдереА, рддреЛ рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ 80 (3 * 24-рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП + 8 рдмрд╛рдЗрдЯреНрд╕ рдЗрдВрдбрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП) рд╣реИред 58% рдкрд░ рд╕рдВрдкреАрдбрд╝рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ред [реи]

рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХрд╛ рдЖрдХрд╛рд░ рднреА рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ, рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рдПрдХ рдмрд╛рдЗрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдкреВрд░реЗ рд╕рд░рдгреА рдХреЛ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рд╕реВрдЪрдХрд╛рдВрдХ 8 рдмрд┐рдЯ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рддрддреНрд╡ 16 рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдлрд┐рд░ 32 рдмрд┐рдЯ рддрдХред рдЦрд╛рд▓реА рдФрд░ рд╣рдЯрд╛рдИ рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рд░рд╛рдВрдХ DKIX_EMPTY рдФрд░ DKIX_DUMMY рд╣реИрдВ, рдХреНрд░рдорд╢рдГ 16 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд┐рд╕реНрддрд╛рд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ 127 рд╕реЗ рдЕрдзрд┐рдХ рдЖрдЗрдЯрдо рд╣реЛрддреЗ рд╣реИрдВред

рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЬрдм рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдУрд╡рд░рдлрд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ kwargs рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕реАрдкреАрдпрдереЙрди рдХреЛрдб рдореЗрдВ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 struct _dictkeysobject { Py_ssize_t dk_refcnt; /* Size of the hash table (dk_indices). It must be a power of 2. */ Py_ssize_t dk_size; /* Function to lookup in the hash table (dk_indices): - lookdict(): general-purpose, and may return DKIX_ERROR if (and only if) a comparison raises an exception. - lookdict_unicode(): specialized to Unicode string keys, comparison of which can never raise an exception; that function can never return DKIX_ERROR. - lookdict_unicode_nodummy(): similar to lookdict_unicode() but further specialized for Unicode string keys that cannot be the <dummy> value. - lookdict_split(): Version of lookdict() for split tables. */ dict_lookup_func dk_lookup; /* Number of usable entries in dk_entries. */ Py_ssize_t dk_usable; /* Number of used entries in dk_entries. */ Py_ssize_t dk_nentries; /* Actual hash table of dk_size entries. It holds indices in dk_entries, or DKIX_EMPTY(-1) or DKIX_DUMMY(-2). Indices must be: 0 <= indice < USABLE_FRACTION(dk_size). The size in bytes of an indice depends on dk_size: - 1 byte if dk_size <= 0xff (char*) - 2 bytes if dk_size <= 0xffff (int16_t*) - 4 bytes if dk_size <= 0xffffffff (int32_t*) - 8 bytes otherwise (int64_t*) Dynamically sized, SIZEOF_VOID_P is minimum. */ char dk_indices[]; /* char is required to avoid strict aliasing. */ /* "PyDictKeyEntry dk_entries[dk_usable];" array follows: see the DK_ENTRIES() macro */ }; 

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

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

  >>>[hash(i) for i in range(4)] [0, 1, 2, 3] 

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

  //   i = i + 1 % n //   : #define PERTURB_SHIFT 5 perturb >>= PERTURB_SHIFT; j = (5*j) + 1 + perturb; //   j % n     

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

  j = (5 * j + 1) % n 

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

  #   (   ,  C) def eq(key, entity): if id(key) == id(entity): return True if hash(key) != hash(entity): return False return key == entity 

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

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

рдЕрдм рдЖрдкрдХреЛ рдЕрдВрддрддрдГ рд╢рдмреНрджрдХреЛрд╢ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 typedef struct { PyObject_HEAD /* Number of items in the dictionary */ Py_ssize_t ma_used; /* Dictionary version: globally unique, value change each time the dictionary is modified */ uint64_t ma_version_tag; PyDictKeysObject *ma_keys; /* If ma_values is NULL, the table is "combined": keys and values are stored in ma_keys. If ma_values is not NULL, the table is splitted: keys are stored in ma_keys and values are stored in ma_values */ PyObject **ma_values; } PyDictObject; 

рднрд╡рд┐рд╖реНрдп рдмрджрд▓рддрд╛ рд╣реИ


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

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА


рд╡рд┐рд╖рдп рдореЗрдВ рдЧрд╣рди рд╡рд┐рд╕рд░реНрдЬрди рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ:

  1. рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб
  2. рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡
  3. рд╕реАрдкреАрдереЙрди рдореЗрдВ рдбрд┐рдХреНрд╢рдирд░реА рд╕реЛрд░реНрд╕ рдХреЛрдб

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


All Articles