рдПрдл-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдпрд╛ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП



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

integer = 42 string = 'FORTY_TWO' print('string number %s, or simply %d' % (string, integer)) print('string number {}, or simply {}'.format(string, integer)) print(f'string number {string}, or simply {integer}') 

рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛,% рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд░реВрдкрдг, рд╕реА рд╕реЗ рдкрд╛рдпрдерди рдореЗрдВ рдЖрдпрд╛ - рдпрд╣ рдкреНрд░рд┐рдВрдЯрдл рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдЬрдЧрд░ рдореЗрдВ рдкрд╣рд▓реА рдереА, рдФрд░ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг реи.рел рдФрд░ рдиреАрдЪреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА (рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ) рдмрдиреА рд╣реБрдИ рд╣реИред

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ str.format рдореЗрдердб рд╣реИ, рдЬреЛ рдмрд┐рд▓реНрдЯ-рдЗрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╣реИред рдпрд╣ рдкрд╛рдпрдерди 3.0 рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕реЗ 2.6 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдореАрд░ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИред

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

рдЖрдЗрдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 import timeit setup = """ integer = 42 string = 'FORTY_TWO' """.strip() percent_stmt ="'Number %s or simply %d' % (string, integer)" call_stmt = "'Number {} or simply {}'.format(string, integer)" fstr_stmt = """f'Number {string} or simply {integer}'""" def time(stmt): return f"{timeit.timeit(stmt, setup, number=int(1e7)):.3f}" print(f"Timing percent formating: | {time(percent_stmt)}") print(f"Timing call formating: | {time(call_stmt)}") print(f"Timing f-string formating: | {time(fstr_stmt)}") 

рдкрд╛рдпрдерди 3.7 рдХреЗ рд╕рд╛рде рдореИрдХрдмреБрдХ рдкрд░ рдкрд░рд┐рдгрд╛рдо:

 Timing percent formating: | 2.025 Timing call formating: | 2.943 Timing f-string formating: | 1.348 

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

рдлреНрд▓рд╛рдпрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд▓рд╛рд╕реНрдХ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд░ рд░реВрдкрд╛рдВрддрд░рдг рдЪрд▓рд╛рдПрдБ:

 38f9d3a65222:~ ikkamens$ git clone https://github.com/pallets/flask.git Cloning into 'flask'... ... Resolving deltas: 100% (12203/12203), done. 38f9d3a65222:~ ikkamens$ flynt flask Flynt run has finished. Stats: Execution time: 0.623s Files modified: 18 Expressions transformed: 43 Character count reduction: 241 (0.04%) _-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_. Please run your tests before commiting. Report bugs as github issues at: https://github.com/ikamensh/flynt Thank you for using flynt! Fstringify more projects and recommend it to your colleagues! _-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_._-_. 38f9d3a65222:~ ikkamens$ 

рдпрд╣ рдЙрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдЬреЛ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВред рдзреНрд╡рдЬ --line_length XX рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрди рдХреА рд▓рдВрдмрд╛рдИ рд╕реАрдорд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдлреНрд▓рд╛рдпрдВрдЯ рдЖрдкрдХреЛ --рдЕрдкрдЧреНрд░реЗрдб рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде pyupgrad рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

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

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

рдирд┐рд╖реНрдХрд░реНрд╖:

рд╣рдордиреЗ рдкрд╛рдпрдерди 3.6+ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рддреАрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдкрдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрд╛, рдЙрдирдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХреАред рд╣рдордиреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдкрди-рд╕реЛрд░реНрд╕ рдЯреВрд▓реНрд╕ рдФрд░ рдЙрдирдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рднреА рдЬрд╛рдВрдЪ рдХреАред рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рди рднреВрд▓реЗрдВ, рдФрд░ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

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


All Articles