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

рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╣реИ: рдЬрдм рдЖрдк рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдпрд╛ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдмреЗрд╣рдж рдХрдард┐рди рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рдареАрдХ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдЧреНрд░рддрд╛, рд╕рдореАрдХреНрд╖рд╛ рдХреМрд╢рд▓ рдФрд░ рдЕрдЪреНрдЫреЗ рдХреЛрдб рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ (рдореЗрд░реЗ рдЬреИрд╕реЗ!) рдЗрди рдХреМрд╢рд▓реЛрдВ рдореЗрдВ рдХрдореА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВред
рддреЛ, рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рд╣рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! рдЖрдЗрдП рдХреЛрдб рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЦреЛрдЬрдиреЗ рдФрд░ рдЕрдВрддрддрдГ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдПрдХ рдЧрд╣рд░рд╛ рдЧреЛрддрд╛ рд▓рдЧрд╛рдПрдБред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдЬрдЯрд┐рд▓рддрд╛ рд░рд╣рддреА рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рд▓рдбрд╝рдирд╛ рд╣реИред рддрдм рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕рд░рд▓ рдХреЛрдб рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ "рд╕рддрдд рд░рд┐рдлрд╝реИрдХреНрдЯрд░рд┐рдВрдЧ" рдФрд░ "рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдСрди рдбрд┐рдорд╛рдВрдб" рд╡рд┐рдХрд╛рд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЕрд╡рд╕рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВред
рдЬрдЯрд┐рд▓рддрд╛ рд╕рдордЭрд╛рдпрд╛
рдПрдХ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдХреЛрдб рдЬрдЯрд┐рд▓рддрд╛" рдХреНрдпрд╛ рд╣реИ? рдФрд░ рдЬрдм рдпрд╣ рдкрд░рд┐рдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рд╕рдЯреАрдХ рдЬрдЯрд┐рд▓рддрд╛ рд╕реНрдерд╛рди рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЫрд┐рдкреА рд╣реБрдИ рдмрд╛рдзрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдЖрдЗрдП рд╕рдмрд╕реЗ рдЖрджрд┐рдо рднрд╛рдЧреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╕рдВрд╕реНрдерд╛рдУрдВ рдореЗрдВ рдЬрд╛рдПрдВред
рдпрд╛рдж рд░рдЦреЗрдВ, рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдирд╛рдо "рдЬрдЯрд┐рд▓рддрд╛ рдЭрд░рдирд╛" рд╣реИ? рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЖрджрд┐рдо рд╕реЗ рдЬрдЯрд┐рд▓рддрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрдореВрд░реНрддрддрд╛ рдореЗрдВ рдХреИрд╕реЗ рдмрд╣рддреА рд╣реИред
рдореИрдВ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ python
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрд▓реНрд▓рдВрдШрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЕрдкрдиреА рдмрд╛рдд рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд▓рд╛рдЗрдирд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ wemake-python-styleguide
ред
рднрд╛рд╡
рдЖрдкрдХреЗ рд╕рднреА рдХреЛрдб рдореЗрдВ a + 1
рдФрд░ print(x)
рдЬреИрд╕реЗ рд╕рд░рд▓ рднрд╛рд╡ рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕реНрд╡рдпрдВ рд╕рд░рд▓ рд╣реИрдВ, рд╡реЗ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╣реИ рдЬреЛ рдХрд┐рд╕реА User
рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд░рддреЗ рд╣реИрдВ:
def format_username(user) -> str: if not user['username']: return user['email'] elif len(user['username']) > 12: return user['username'][:12] + '...' return '@' + user['username']
рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд╣реИ рдирд╛? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдореЗрдВ рджреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐-рдЖрдзрд╛рд░рд┐рдд рдЬрдЯрд┐рд▓рддрд╛ рдореБрджреНрджреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ overuses 'username'
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдЬрд┐рдХ рдирдВрдмрд░ 12
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рд╣рдо рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ, 13
рдпрд╛ 10
рдХреНрдпреЛрдВ рдирд╣реАрдВ?)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдвреВрдВрдврдирд╛ рдХрдард┐рди рд╣реИред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдмреЗрд╣рддрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рдПрдВ рднреА рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ some_object.some_attr
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ: рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп some_object.some_attr
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рддрд░реНрдХ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдпрд╛ рдмрд╣реБрдд рдЧрд╣рд░реА рдбреЙрдЯ рдПрдХреНрд╕реЗрд╕ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ред
рд╕рдорд╛рдзрд╛рди : рдирдП рдЪрд░, рддрд░реНрдХ рдпрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдПрдВред рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реИ рддреЛ рдирдП рдпреВрдЯрд┐рд▓рд┐рдЯреА рдлрдВрдХреНрд╢рди рдпрд╛ рддрд░реАрдХреЗ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред
рдкрдВрдХреНрддрд┐рдпрд╛рдВ
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдХреЛрдб рд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рддреА рд╣реИрдВ (рдХреГрдкрдпрд╛, рдмрдпрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ: рдПрдХ рдмрдпрд╛рди рдореЗрдВ рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдХрдИ рдХрдерди рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдХрд┐рд╕реА рд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЬрдЯрд┐рд▓рддрд╛ рдореАрдЯреНрд░рд┐рдХ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рдЬреА рд╣рд╛рдВ, рдЖрдкрдиреЗ рд╕рд╣реА рд╕реБрдирд╛ред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо (рдкреНрд░реЛрдЧреНрд░рд╛рдорд░) 80
рдЪрд╛рд░реНрдЯ-рдкреНрд░рддрд┐-рдкрдВрдХреНрддрд┐ рдирд┐рдпрдо рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рди рдХрд┐ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рдЯреЗрд▓реЗрдЯрд╛рдЗрдкрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рдЕрдлрд╡рд╛рд╣реЗрдВ рд╣реИрдВ, рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП 2 рд╕рд╛рд▓ 1919 рдореЗрдВ 80
рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ 80
рд╡рд░реНрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 160
рдЪрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛрдЧреБрдиреЗ рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕реАрдорд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдФрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдж рд░рдЦреЗрдВ, рдпрд╣ рдПрдХ рд╢реИрд▓реАрдЧрдд рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ ред рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓рддрд╛ рдореАрдЯреНрд░рд┐рдХ рд╣реИ!
рджреВрд╕рд░реА рдореБрдЦреНрдп рд▓рд╛рдЗрди рдЬрдЯрд┐рд▓рддрд╛ рдореАрдЯреНрд░рд┐рдХ рдХрдо рдЬреНрдЮрд╛рдд рд╣реИ рдФрд░ рдХрдо рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕реЗ рдЬреЛрдиреНрд╕ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕рд┐рдЯреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ: рд╣рдо рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреЛрдб (рдпрд╛ ast
) рдиреЛрдбреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдпреЗ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдЗрд╕рдХреА рд╕рдорд╛рди рдЪреМрдбрд╝рд╛рдИ рд╣реИ:
print(first_long_name_with_meaning, second_very_long_name_with_meaning, third) print(first * 5 + math.pi * 2, matrix.trans(*matrix), display.show(matrix, 2))
рдЪрд▓реЛ рдкрд╣рд▓реЗ рдПрдХ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рдХреЙрд▓, рддреАрди рдирд╛рдоред рдЪрд╛рд░ рдиреЛрдбреНрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗред рджреВрд╕рд░реЗ рдореЗрдВ рдЗрдХреНрдХреАрд╕ ast
рдиреЛрдбреНрд╕ рд╣реИрдВред рдЦреИрд░, рдЕрдВрддрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдкрд╣рд▓реА рд▓рдВрдмреА рд▓рд╛рдЗрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдиреНрд╕ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕рд┐рдЯреА рдореЗрдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд╕реНрд╡реАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рди рдХрд┐ рдЙрд╕ рдХрдЪреНрдЪреА рд▓рдВрдмрд╛рдИ рдкрд░ред
рдПрдХ рдЙрдЪреНрдЪ рдЬреЛрдиреНрд╕ рдЬрдЯрд┐рд▓рддрд╛ рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?
рд╕рдорд╛рдзрд╛рди : рдЙрдиреНрд╣реЗрдВ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдпрд╛ рдирдП рдордзреНрдпрд╡рд░реНрддреА рдЪрд░, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд░реНрдп, рдирдИ рдХрдХреНрд╖рд╛рдПрдВ рдЖрджрд┐ рдмрдирд╛рдПрдВред
print( first * 5 + math.pi * 2, matrix.trans(*matrix), display.show(matrix, 2), )
рдЕрдм рдпрд╣ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИ!
рд╕рдВрд░рдЪрдирд╛рдПрдВ
рдЕрдЧрд▓рд╛ рдЪрд░рдг рднрд╛рд╖рд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ if
, рдЬреИрд╕реЗ, with
, рдЖрджрд┐ рдЬреЛ рд░реЗрдЦрд╛рдУрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдмрдирддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рдВрджреБ рдмрд╣реБрдд рднрд╛рд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рдореИрдВ рдЗрд╕ рд╢реНрд░реЗрдгреА рд╕реЗ python
рд╕рд╛рде-рд╕рд╛рде рдХрдИ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдБрдЧрд╛ред
рд╣рдо if
рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЕрдЪреНрдЫреЗ-рдмреВрдврд╝реЗ рд╕реЗ рдЖрд╕рд╛рди рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ if
? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, if
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХреЛрдИ reimplement switch
рдХреЛ reimplement switch
рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
if isinstance(some, int): ... elif isinstance(some, float): ... elif isinstance(some, complex): ... elif isinstance(some, str): ... elif isinstance(some, bytes): ... elif isinstance(some, list): ...
рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдареАрдХ рд╣реИ, рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджрд╕рд┐рдпреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╕реАрдорд╛ рд╢реБрд▓реНрдХ рд╕рд╣рд┐рдд рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рдЕрднреА рддрдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдпрд╣ рдЬрдЯрд┐рд▓ рдХреЛрдб рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдПрдХ рдЧрд▓рдд рдкреИрдЯрд░реНрди рдЪреБрди рд░рд╣реЗ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЛрдб рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдИ typeclass
es рдпрд╛ singledispatch
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рдПрдХ рд╣реА рдиреМрдХрд░реА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреЗ рд╣реИрдВред
python
рд╣рдореЗрдВ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ , рдЬреЛ рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдФрд░ рднреНрд░рд╛рдордХ рд╣реИ:
with first(), second(), third(), fourth(): ...
рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ for
рд╕рдордЭ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЬрдЯрд┐рд▓, рдЕрдкрдардиреАрдп рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
[ (x, y, z) for x in x_coords for y in y_coords for z in z_coords if x > 0 if y > 0 if z > 0 if x + y <= z if x + z <= y if y + z <= x ]
рдЗрд╕рдХреА рддреБрд▓рдирд╛ рд╕рд░рд▓ рдФрд░ рдкрдардиреАрдп рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдХрд░реЗрдВ:
[ (x, y, z) for x, y, x in itertools.product(x_coords, y_coords, z_coords) if valid_coordinates(x, y, z) ]
рдЖрдк рдЧрд▓рддреА рд╕реЗ multiple statements inside a try
рдорд╛рдорд▓реЗ рдореЗрдВ multiple statements inside a try
рднреА рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реНрдерд╛рди рдкрд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ:
try: user = fetch_user()
рдФрд░ рдпрд╣ 10% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ python
рдХреЛрдб рдХреЗ рд╕рд╛рде рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЪрд▓реЗрдЧрд╛ред рдХрдИ, рдХрдИ рдФрд░ рдЕрдзрд┐рдХ рдХрд┐рдирд╛рд░реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЯреНрд░реИрдХ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдорд╛рдзрд╛рди : рдЕрдкрдиреА рдкрд╕рдВрдж рдХреА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рд▓рд┐рдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реА рдПрдХрдорд╛рддреНрд░ рд╕рдВрднрд╡ рдЙрдкрд╛рдп рд╣реИред рдФрд░ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдЬрдЯрд┐рд▓ рд╕реНрдерд╛рди рд╣реИ рдЬреЛ рдЗрд╕ рд▓рд┐рдВрдЯрд░ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдкрд╣рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдордЬрдмреВрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдареАрдХ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдиреАрддрд┐рдпрд╛рдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреА рд╣реЛрдВрдЧреАред
рдХрд╛рд░реНрдп
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ, рдХрдерди рдФрд░ рд╕рдВрд░рдЪрдирд╛рдПрдБ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИрдВред рдЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рд╕реЗ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрд╣рддреА рд╣реИред рдФрд░ рдпрд╣реАрдВ рд╕реЗ рдЪреАрдЬреЗрдВ рдкреЗрдЪреАрджрд╛ рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рджрд░реНрдЬрдиреЛрдВ рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╣реИрдВ: рдЕрдЪреНрдЫрд╛ рдФрд░ рдмреБрд░рд╛ рджреЛрдиреЛрдВред
рд╣рдо рд╕рдмрд╕реЗ рдЬреНрдЮрд╛рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ: рдХреЛрдб рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЪрдХреНрд░рд╡рд╛рддреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдЗрдХреНрд▓реЛрдореИрдЯрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╡рд╛рд╣ рдХрд┐рддрдиреЗ рдореЛрдбрд╝ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ рд▓рдЧрднрдЧ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдореАрдЯреНрд░рд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рд▓рдВрдмрд╛рдИ рдПрдХ рдЦрд░рд╛рдм рдореАрдЯреНрд░рд┐рдХ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдордЭрд╛рдП рдЧрдП рдЬреЛрдиреНрд╕ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕рд┐рдЯреА рдореЗрдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдХреЙрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ: рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдПрдХ рдмрдбрд╝реА рд▓рд╛рдЗрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдЕрдЪреНрдЫреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдмреБрд░реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░реЗрдВрдЧреЗред
рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдИ рдЙрдкрдпреЛрдЧреА рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдирд┐рдпрдорд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрдЬрд╛рдп рдЧрд┐рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдлрд╝рдВрдХреНрд╢рди рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рдПрдиреЛрдЯреЗрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛; рдмреЗрд╣рддрд░ рд╣реИ
- рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рд░рд┐рдЯрд░реНрди, рдкреИрджрд╛рд╡рд╛рд░, рдЗрдВрддрдЬрд╛рд░ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рдмрдпрд╛рдиреЛрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
рдЗрди рд╕рднреА рдЪреЗрдХреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рд╕рд░рд▓ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рднреА рддрд░реАрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдХреБрдЫ рдмреБрд░рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рддреЛ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореАрдЯреНрд░рд┐рдХ рддреЛрдбрд╝ рджреЗрдВрдЧреЗред рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдВрдЯрд░ рдХреЛ рдирд┐рд░рд╛рд╢ рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЙрдбрд╝рд╛ рджреЗрдЧрд╛ред рдирддреАрдЬрддрди, рдЖрдкрдХрд╛ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реЗрдЬ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдорд╛рдзрд╛рди : рдЬрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдХрдХреНрд╖рд╛рдПрдВ
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рдж рдЕрдореВрд░реНрдд рдХрд╛ рдЕрдЧрд▓рд╛ рд╕реНрддрд░ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдерд╛ рдХрд┐ рд╡реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рддрд░рд▓ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреИрд╕реЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдФрд░ рдорд┐рд╢реНрд░рдг, рд╡рд░реНрдЧ-рд╕реНрддрд░реАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдФрд░ рд╡рд░реНрдЧ-рд╕реНрддрд░реАрдп рд╕рдЬреНрдЬрд╛рдХрд╛рд░ред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХреНрд▓рд╛рд╕ рдмреЙрдбреА рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред
рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдорд╛рдкрдирд╛ рд╣реЛрдЧрд╛:
- рдХрдХреНрд╖рд╛-рд╕реНрддрд░реАрдп рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рдмреЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рд╡рд░реНрдЧ-рд╕реНрддрд░реАрдп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рдЙрджрд╛рд╣рд░рдг-рд╕реНрддрд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
рдЬрдм рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ - рд╣рдореЗрдВ рдЕрд▓рд╛рд░реНрдо рдмрдЬрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛!
рд╕рдорд╛рдзрд╛рди : рдЕрдкрдиреЗ рдЕрд╕рдлрд▓ рд╡рд░реНрдЧ рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░реЗрдВ! рдПрдХ рдореМрдЬреВрджрд╛ рдЬрдЯрд┐рд▓ рд╡рд░реНрдЧ рдХреЛ рдХрдИ рд╕рд░рд▓ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдпрд╛ рдирдП рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ рдФрд░ рд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЙрд▓реНрд▓реЗрдЦ: рдХреЛрдИ рдЖрдкрдХреЗ OOP рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордВрдЬрд╕реНрдп рдФрд░ рдпреБрдЧреНрдорди рдореАрдЯреНрд░рд┐рдХ рднреА рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореЙрдбреНрдпреВрд▓
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрдИ рдХрдерди, рдХрд╛рд░реНрдп рдФрд░ рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдирдП рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛: рдпрд╣ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрд╣рддреА рд╣реИред
рд╣рдореЗрдВ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╣реИ:
- рдЖрдпрд╛рдд рдФрд░ рдЖрдпрд╛рддрд┐рдд рдирд╛рдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
- рдЕрдВрджрд░ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдФрд╕рдд рдЬрдЯрд┐рд▓рддрд╛; рдХрдо рдмреЗрд╣рддрд░ рд╣реИ
рдПрдХ рдЬрдЯрд┐рд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ?
рд╕рдорд╛рдзрд╛рди : рд╣рд╛рдВ, рдЖрдкрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рдкрд╛рдпрд╛ред рд╣рдо рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдИ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╕рдВрдХреБрд▓
рдкреИрдХреЗрдЬ рдореЗрдВ рдХрдИ рдореЙрдбреНрдпреВрд▓ рд╣реЛрддреЗ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╕рдм рд╡реЗ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд▓реНрдж рд╣реА рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдорд╛рдзрд╛рди : рдЖрдкрдХреЛ рдкреИрдХреЗрдЬ рдХреЛ рдЙрдк-рдкреИрдХреЗрдЬ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЬрдЯрд┐рд▓рддрд╛ рдЭрд░рдирд╛ рдкреНрд░рднрд╛рд╡
рдЕрдм рд╣рдордиреЗ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рд░ рд╢рд╛рдорд┐рд▓ рдХрд░ рд▓рд┐рдП рд╣реИрдВред рд╣рдордиреЗ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ рд╣реИ? рдореБрдЦреНрдп рдЯреЗрдХрдЕрд╡реЗ, рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рдпрд╛ рдКрдкрд░реА рдЕрдореВрд░реНрдд рд╕реНрддрд░ рдкрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рд╣рдореЗрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдЪрд╛рд░ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ: рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдмрд╣рдиреЗ рди рджреЗрдВред рдореИрдВ рдХрдИ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рдЖрдк рдХрд░рддреЗ рд╣реИрдВ:
рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдореАрдХреНрд╖рд╛ рдкрд░ рдкрд╛рд╕ рдХрд░ рджреВрдВрдЧрд╛ред рдФрд░ рдХреБрдЫ рднреА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдЬреЛ рдмрд╛рдд рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдЯрд┐рд▓рддрд╛ рдЗрд╕ рд░реЗрдЦрд╛ рд╕реЗ рдмрд╣ рдирд┐рдХрд▓реА рд╣реИ! рдпрд╣реА wemake-python-styleguide
рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛:

рдареАрдХ рд╣реИ, рд╣рдореЗрдВ рдЕрдм рдЗрд╕ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЪрд▓реЛ рдПрдХ рдирдпрд╛ рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВ:
class Product(object): ... def can_be_purchased(self, user_id) -> bool: ... is_sub_paid = sub.is_due(tz.now() + delta) if user.is_active and user.has_sub() and is_sub_paid: ... ... ...
рдЕрдм, рд▓рд╛рдЗрди рдЬрдЯрд┐рд▓рддрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рд▓реЗрдХрд┐рди, рдПрдХ рдорд┐рдирдЯ рд░реБрдХрд┐рдПред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЪрд░ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ рдЪрд░ рдмрдирд╛рдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдореЗрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрдИ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ:
class Product(object): ... def can_be_purchased(self, user_id) -> bool: ... if self._has_paid_sub(user, sub, delta): ... ... def _has_paid_sub(self, user, sub, delta) -> bool: is_sub_paid = sub.is_due(tz.now() + delta) return user.is_active and user.has_sub() and is_sub_paid ...
рдЕрдм рд╣рдо рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ! рд╣реИ рди? рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЕрдм Product
рд╡рд░реНрдЧ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП, рдХрд┐ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ _has_paid_sub
рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред
рдареАрдХ рд╣реИ, рд╣рдо рдлрд┐рд░ рд╕реЗ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд▓рд┐рдВрдЯрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рдФрд░ рд╣рдорд╛рд░реЗ Product
рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИред рд╣рдорд╛рд░реЗ рдХрд░реНрдо? рд╣рдордиреЗ рдЗрд╕реЗ рдХрдИ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ!
class Policy(object): ... class SubcsriptionPolicy(Policy): ... def can_be_purchased(self, user_id) -> bool: ... if self._has_paid_sub(user, sub, delta): ... ... def _has_paid_sub(self, user, sub, delta) -> bool: is_sub_paid = sub.is_due(tz.now() + delta) return user.is_active and user.has_sub() and is_sub_paid class Product(object): _purchasing_policy: Policy ... ...
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рдЪрд▓рдирд╛ рд╣реИ! рдЦреИрд░, рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдм рдореЙрдбреНрдпреВрд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреАред рдФрд░ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпрд╛? рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╕рджрд╕реНрдп рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛! рдлрд┐рд░ рд╣рдо рдкреИрдХреЗрдЬ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдХрдИ рдЙрдк-рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рднреА рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ рд╣реИ? рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЬрдЯрд┐рд▓рддрд╛ рдирд┐рдпрдореЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░рд╛ рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рд╕рдВрд╢реЛрдзрди рдХрдИ рдирдП рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рд╕рддреНрд░ рдмрди рдЧрдпрд╛ред рдФрд░ рд╣рдордиреЗ рдЦреБрдж рдПрдХ рднреА рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИ: рд╣рдорд╛рд░реЗ рд╕рднреА рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд▓рдХреНрд╖реНрдп рдЖрдВрддрд░рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдереЗред
рдЗрд╕реЗ рд╣реА рдореИрдВ "рд╕рддрдд рд░рд┐рдлрд╝реИрдХреНрдЯрд░реА" рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╣рддрд╛ рд╣реВрдВред рдЖрдкрдХреЛ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ред
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдгрд╛рдо рднреА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ "рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдСрди рдбрд┐рдорд╛рдВрдб" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдордЭрд╛рдиреЗ рдХреАред "рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдСрди рдбрд┐рдорд╛рдВрдб" рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдЖрдк рд╣рдореЗрд╢рд╛ рдЫреЛрдЯреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХрд▓ logic/domains/user.py
рдлрд╝рд╛рдЗрд▓ред рдФрд░ рдЖрдк рдЕрдкрдирд╛ рд╕рдм рдХреБрдЫ рд╡рд╣рд╛рдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд User
рдХреЛ рдбрд╛рд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдордп рдЖрдк рд╢рд╛рдпрдж рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдкрдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреИрд╕реА рджрд┐рдЦреЗрдЧреАред рдФрд░ рдЖрдк рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рддреАрди рдлрд╝рдВрдХреНрд╢рди рдкрд╕рдВрдж рд╣реИрдВред
рдХреБрдЫ рд▓реЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдмрдирд╛рдо рдХреЛрдб рдЬрдЯрд┐рд▓рддрд╛ рдЬрд╛рд▓ рдореЗрдВ рдкрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВред рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА / рд╕рд░реНрд╡рд┐рд╕ / рдбреЛрдореЗрди рд▓реЗрдпрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╕реЗ рд╣реА рдЕрдкрдиреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рд╡реЗ рдмрд┐рдирд╛ рд╕реНрдкрд╖реНрдЯ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд░реНрд╖реЛрдВ рддрдХ рдЗрд╕ рддрд░рд╣ рд╕рдВрдШрд░реНрд╖ рдХрд░реЛ рдФрд░ рдЬреАрдиреЗ рджреЛ (рдпрджрд┐ рд╡реЗ рдЗрд╕ рддрд░рд╣ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд░реНрд╖реЛрдВ рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣ рдкрд╛рдПрдВрдЧреЗ!)ред
"рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдСрди рдбрд┐рдорд╛рдВрдб" рдЕрд╡рдзрд╛рд░рдгрд╛ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред рдЖрдк рдЫреЛрдЯреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рд╕рдордп рдЖрддрд╛ рд╣реИ - рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ:
- рдЖрдк
logic/domains/user.py
рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдбрд╛рд▓рддреЗ рд╣реИрдВ - рдмрд╛рдж рдореЗрдВ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдорд╛рди рд╣реЛ, рддреЛ рдЖрдк
logic/domains/user/repository.py
рдмрдирд╛рддреЗ рд╣реИрдВ - рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рддрдм рдЖрдк рдЗрд╕реЗ
logic/domains/user/repository/queries.py
рдФрд░ logic/domains/user/repository/commands.py
logic/domains/user/repository/queries.py
рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред - рдлрд┐рд░ рдЖрдк
http
рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде logic/domains/user/services.py
рдмрдирд╛рдПрдБ - рдлрд┐рд░ рдЖрдк рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ
logic/domains/order.py
- рд╡рдЧреИрд░рд╣ рд╡рдЧреИрд░рд╣
рдпрд╣ рдмрд╛рдд рд╣реИред рдпрд╣ рдЖрдкрдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдХреЛрдб рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рдЙрдкрдХрд░рдг рд╣реИред рдФрд░ рдЙрддрдиреА рд╣реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рддрдиреА рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдЪреНрдЫрд╛ рд▓рд┐рдВрдЯрд░ рд▓рд╛рдкрддрд╛ рдХреЙрдорд╛ рдФрд░ рдЦрд░рд╛рдм рдЙрджреНрдзрд░рдг рдЦреЛрдЬрдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд░рддрд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рд▓рд┐рдВрдЯрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдФрд░ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, wemake-python-styleguide
python
рд╕реНрд░реЛрдд рдХреЛрдб рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рд╕рднреА рд╕реНрддрд░реЛрдВ рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╕реЗ рд▓рдбрд╝реЗрдВ
- рдирд╛рдордХрд░рдг рдорд╛рдирдХреЛрдВ, рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдФрд░ рд╕реНрдерд┐рд░рддрд╛ рдЬрд╛рдВрдЪ рдХреА рд╡рд┐рд╢рд╛рд▓ рдорд╛рддреНрд░рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
- рдЖрд╕рд╛рдиреА рд╕реЗ
flakehell
рд╡рд┐рдХрд▓реНтАНрдк рдпрд╛ flakehell
рдЯреВрд▓ рдХреА рдорджрдж рд╕реЗ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдЙрд▓реНтАНрд▓рдВрдШрди рдХреЛ рдорд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдЬрд╛рдПрдЧреАред - рдЗрд╕реЗ рдЕрдкрдиреЗ [CI] () рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ Github рдПрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА
рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдХрд░рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рди рджреЗрдВ, рдПрдХ рдЕрдЪреНрдЫреЗ рд▓рд┐рдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ !