Python 3.11 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдХреЛ рд░рд┐рд▓реАрдЬ

рд╡рд┐рдХрд╛рд╕рдХреЛ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐, рдкрд╛рдЗрдерди 3.11 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдХреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рд▓рд╛рдИ рдбреЗрдв рд╡рд░реНрд╖рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣рдпреЛрдЧ рдЧрд░рд┐рдиреЗрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдердк рд╕рд╛рдвреЗ рддреАрди рд╡рд░реНрд╖рдХрд╛ рд▓рд╛рдЧрд┐ рдХрдордЬреЛрд░реАрд╣рд░реВ рд╣рдЯрд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ рдлрд┐рдХреНрд╕рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░рд┐рдиреЗрдЫред

рдЙрд╣реА рд╕рдордпрдорд╛, рдкрд╛рдЗрдерди 3.12 рд╢рд╛рдЦрд╛рдХреЛ рдЕрд▓реНрдлрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реБрд░реБ рднрдпреЛ (рдирдпрд╛рдБ рд╡рд┐рдХрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдЕрдиреБрд╕рд╛рд░, рдЕрдШрд┐рд▓реНрд▓реЛ рд╢рд╛рдЦрд╛рдХреЛ рд░рд┐рд▓реАрдЬрдХреЛ рдкрд╛рдБрдЪ рдорд╣рд┐рдирд╛ рдЕрдШрд┐ рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рдХреЛ рдХрд╛рдо рд╕реБрд░реБ рд╣реБрдиреНрдЫ рд░ рдЕрд░реНрдХреЛ рд░рд┐рд▓реАрдЬрдХреЛ рд╕рдордпрдорд╛ рдЕрд▓реНрдлрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд░рдгрдорд╛ рдкреБрдЧреНрдЫред )ред Python 3.12 рд╢рд╛рдЦрд╛ рд╕рд╛рдд рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд▓реНрдлрд╛ рд░рд┐рд▓реАрдЬрдорд╛ рд╣реБрдиреЗрдЫ, рдЬрд╕рдХреЛ рдЕрд╡рдзрд┐рдорд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдердкрд┐рдиреЗрдЫ рд░ рдмрдЧрд╣рд░реВ рдлрд┐рдХреНрд╕ рдЧрд░рд┐рдиреЗрдЫред рдпрд╕рдкрдЫрд┐, рдмрд┐рдЯрд╛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рддреАрди рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдиреЗрдЫ, рдЬрд╕рдорд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдердкреНрди рдирд┐рд╖реЗрдз рдЧрд░рд┐рдиреЗрдЫ рд░ рд╕рдмреИ рдзреНрдпрд╛рди рдмрдЧрд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рджрд┐рдЗрдиреЗрдЫред рд░рд┐рд▓рд┐рдЬ рд╣реБрдиреБ рдЕрдШрд┐ рдЕрдиреНрддрд┐рдо рджреБрдИ рдорд╣рд┐рдирд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╢рд╛рдЦрд╛ рд░рд┐рд▓рд┐рдЬ рдЙрдореНрдореЗрджреНрд╡рд╛рд░ рдЪрд░рдгрдорд╛ рд╣реБрдиреЗрдЫ, рдЬрд╕рдорд╛ рдЕрдиреНрддрд┐рдо рд╕реНрдерд┐рд░реАрдХрд░рдг рдЧрд░рд┐рдиреЗрдЫред

Python 3.11 рдорд╛ рдирдпрд╛рдБ рдердкрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:

  • рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирд▓рд╛рдИ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрд╛рдо рдЧрд░рд┐рдПрдХреЛ рдЫред рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рд▓реЗ рдлрдВрдХреНрд╢рди рдХрд▓рд╣рд░реВрдХреЛ рдПрдХреНрд╕реЗрд▓реЗрд░реЗрд╢рди рд░ рдЗрдирд▓рд╛рдЗрди рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ, рдорд╛рдирдХ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ (x+x, x*x, xx, a[i], a[i] = z, f(arg) рдХреЛ рджреНрд░реБрдд рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред C(arg), o.method(), o.attr = z, *seq), рд╕рд╛рдереИ рд╕рд┐рдиреНрдбрд░ рд░ HotPy рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХрд╛ рдЕрдиреБрдХреВрд▓рдирд╣рд░реВред рд▓реЛрдб рдХреЛ рдкреНрд░рдХрд╛рд░ рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ, 10-60% рдХреЛ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрддрд┐ рдорд╛ рд╡реГрджреНрдзрд┐ рдЫред рдФрд╕рддрдорд╛, pyperformance рдкрд░реАрдХреНрд╖рдг рд╕реБрдЗрдЯ рдорд╛ рдкреНрд░рджрд░реНрд╢рди 25% рд▓реЗ рдмрдвреНрдпреЛред

    рдмрд╛рдЗрдЯрдХреЛрдб рдХреНрдпрд╛рд╕рд┐рдЩ рдореЗрдХрд╛рдирд┐рдЬрдо рдкреБрди: рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдЕрдиреБрд╡рд╛рджрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп 10-15% рд▓реЗ рдШрдЯрд╛рдПрдХреЛ рдЫред рдХреЛрдб рд░ рдмрд╛рдЗрдЯрдХреЛрдб рднрдПрдХрд╛ рд╡рд╕реНрддреБрд╣рд░реВ рдЕрдм рджреЛрднрд╛рд╖реЗрджреНрд╡рд╛рд░рд╛ рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН, рдЬрд╕рд▓реЗ рдХреНрдпрд╛рд╕рдмрд╛рдЯ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдЕрдирдорд╛рд░реНрд╢рд▓рд┐рдВрдЧ рдмрд╛рдЗрдЯрдХреЛрдбрдХрд╛ рдЪрд░рдгрд╣рд░реВ рд╣рдЯрд╛рдЙрди рд░ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реАрдорд╛ рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдбрдХреЛ рд╕рд╛рде рд╡рд╕реНрддреБрд╣рд░реВ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдпреЛред

  • рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕рдиреНрджреЗрд╢рд╣рд░реВрдорд╛ рдХрд▓ рдЯреНрд░реЗрд╕рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрд╛, рдЕрдм рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ (рдкрд╣рд┐рд▓реЗ, рд░реЗрдЦрд╛рдХреЛ рдХреБрди рднрд╛рдЧрд▓реЗ рддреНрд░реБрдЯрд┐ рдирд┐рдореНрддреНрдпрд╛рдПрдХреЛ рдерд┐рдпреЛ рднрдиреЗрд░ рд╡рд┐рд╡рд░рдг рдирдЧрд░реА рдорд╛рддреНрд░ рд░реЗрдЦрд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ)ред рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЯреНрд░реЗрд╕ рдЬрд╛рдирдХрд╛рд░реА API рдорд╛рд░реНрдлрдд рдкрдирд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ codeobject.co_positions() рд╡рд┐рдзрд┐ рд╡рд╛ C API рдкреНрд░рдХрд╛рд░реНрдп PyCode_Addr2Location() рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрд░реЛрдд рдХреЛрдбрдорд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рдирдорд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдирдХреНрд╕рд╛ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдкрд░рд┐рд╡рд░реНрддрдирд▓реЗ рдиреЗрд╕реНрдЯреЗрдб рд╢рдмреНрджрдХреЛрд╢ рд╡рд╕реНрддреБрд╣рд░реВ, рдзреЗрд░реИ рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓рд╣рд░реВ, рд░ рдЬрдЯрд┐рд▓ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд╕рдБрдЧ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдбрд┐рдмрдЧ рдЧрд░реНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫред рдЯреНрд░реЗрд╕рдмреНрдпрд╛рдХ (рд╕рдмреИрднрдиреНрджрд╛ рдкрдЫрд┐рд▓реНрд▓реЛ рдХрд▓): рдлрд╛рдЗрд▓ "calculation.py", рд▓рд╛рдЗрди 54, рдкрд░рд┐рдгрд╛рдо = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: рд╢реВрдиреНрдп рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди
  • рдЕрдкрд╡рд╛рдж рд╕рдореВрд╣рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рдХрд╛рд░реНрдпрдХреНрд░рдорд▓рд╛рдИ рдПрдХреИрдЪреЛрдЯрд┐ рдзреЗрд░реИ рдлрд░рдХ рдЕрдкрд╡рд╛рджрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рд░ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИред рдзреЗрд░реИ рдЕрдкрд╡рд╛рджрд╣рд░реВ рд╕рдореВрд╣рдмрджреНрдз рдЧрд░реНрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдБрдЧреИ рдЙрдард╛рдЙрди, рдирдпрд╛рдБ рдЕрдкрд╡рд╛рдж рдкреНрд░рдХрд╛рд░ ExceptionGroup рд░ BaseExceptionGroup рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ рд╕рдореВрд╣рдмрд╛рдЯ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдкрд╡рд╛рджрд╣рд░реВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реНрди "рдмрд╛рд╣реЗрдХ*" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдердкрд┐рдПрдХреЛ рдЫред
  • Add_note() рд╡рд┐рдзрд┐ BaseException рд╡рд░реНрдЧрдорд╛ рдердкрд┐рдПрдХреЛ рдЫ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЕрдкрд╡рд╛рджрдорд╛ рдкрд╛рда рдиреЛрдЯ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рджреИ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрдкрд╡рд╛рдж рдлреНрдпрд╛рдБрдХрд┐рдПрдХреЛ рдмреЗрд▓рд╛рдорд╛ рдЙрдкрд▓рдмреНрдз рдирднрдПрдХреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдердкреНрджреИред
  • рд╣рд╛рд▓рдХреЛ рдирд┐рдЬреА рд╡рд░реНрдЧрдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрди рд╡рд┐рд╢реЗрд╖ рдЖрддреНрдо рдкреНрд░рдХрд╛рд░ рдердкрд┐рдпреЛред рд╕реЗрд▓реНрдлрд▓рд╛рдИ TypeVar рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рднрдиреНрджрд╛ рд╕рд░рд▓ рддрд░рд┐рдХрд╛рдорд╛ рдпрд╕рдХреЛ рд╡рд░реНрдЧрдХреЛ рдЙрджрд╛рд╣рд░рдг рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗ рд╡рд┐рдзрд┐рд╣рд░реВ рдПрдиреЛрдЯреЗрдЯ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдХреНрд▓рд╛рд╕ MyLock: def __enter__(self) -> Self: self.lock() рдлрд┐рд░реНрддрд╛ рд╕реЗрд▓реНрдл
  • рдПрдХ рд╡рд┐рд╢реЗрд╖ LiteralString рдкреНрд░рдХрд╛рд░ рдердкрд┐рдпреЛ рдЬрд╕рдорд╛ LiteralString рдкреНрд░рдХрд╛рд░ (рдЕрд░реНрдерд╛рддреН, рдмреЗрдпрд░ рд░ LiteralString рд╕реНрдЯреНрд░рд┐рдЩрд╣рд░реВ, рддрд░ рд╕реНрд╡реЗрдЪреНрдЫрд╛рдЪрд╛рд░реА рд╡рд╛ рд╕рдВрдпреБрдХреНрдд str рд╕реНрдЯреНрд░рд┐рдЩрд╣рд░реВ рд╣реЛрдЗрди) рд╕рдБрдЧ рдорд┐рд▓реНрдиреЗ рд╕реНрдЯреНрд░рд┐рдЩ рд▓рд┐рдЯрд░рд▓рд╣рд░реВ рдорд╛рддреНрд░ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред LiteralString рдкреНрд░рдХрд╛рд░ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рд╕реНрдЯреНрд░рд┐рдЩ рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрди рд╕реАрдорд┐рдд рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд╕реНрдЯреНрд░рд┐рдЩрдХрд╛ рднрд╛рдЧрд╣рд░реВрдХреЛ рд╕реНрд╡реЗрдЪреНрдЫрд╛рдЪрд╛рд░реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЬрд╕рд▓реЗ рдХрдордЬреЛрд░реАрд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, SQL рдХреНрд╡реЗрд░реАрд╣рд░реВ рд╡рд╛ рд╢реЗрд▓ рдЖрджреЗрд╢рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдЯреНрд░рд┐рдЩрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрджрд╛ред def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> рдХреБрдиреИ рдкрдирд┐ рдЫреИрди: run_query ("рдЫрд╛рдиреНрдиреБрд╣реЛрд╕реН * рд╡рд┐рджреНрдпрд╛рд░реНрдереАрд╣рд░реВ") # рдареАрдХ рдЫ рд░рди_рдХреНрд╡реЗрд░реА (рд▓рд┐рдЯрд░рд▓_рд╕реНрдЯреНрд░рд┐рдЩ) # рдареАрдХ рдЫ рд░рди_рдХреНрд╡реЗрд░реА ("SELECT * FROM" + рд╢рд╛рдмреНрджрд┐рдХ_рд╕реНрдЯреНрд░рд┐рдВрдЧ) # рдареАрдХ рдЫ рд░рди_рдХреНрд╡реЗрд░реА (рдЖрд░реНрдмрд┐рдЯрд░реА_рд╕реНрдЯреНрд░рд┐рдВрдЧ) # рддреНрд░реБрдЯрд┐ рд░рди_рдХреНрд╡реЗрд░реА (# рддреНрд░реБрдЯрд┐ f" рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН * рд╡рд┐рджреНрдпрд╛рд░реНрдереАрд╣рд░реВрдмрд╛рдЯ рдЬрд╣рд╛рдБ рдирд╛рдо = {arbitrary_string}")
  • TypeVarTuple рдкреНрд░рдХрд╛рд░ рдердкрд┐рдПрдХреЛ рдЫ, TypeVar рдХреЛ рд╡рд┐рдкрд░реАрдд рдЪрд░ рдЬреЗрдиреЗрд░рд┐рдХрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИ, рдЬрд╕рд▓реЗ рдПрдХ рдкреНрд░рдХрд╛рд░рд▓рд╛рдИ рдХрднрд░ рдЧрд░реНрджреИрди, рддрд░ рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд╕реНрд╡реЗрдЪреНрдЫрд╛рдЪрд╛рд░реА рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред
  • рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓реЗ TOML рдврд╛рдБрдЪрд╛ рдкрд╛рд░реНрд╕ рдЧрд░реНрди рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд╣рд┐рдд tomllib рдореЛрдбреНрдпреБрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред
  • рдЖрд╡рд╢реНрдпрдХ рд░ рдРрдЪреНрдЫрд┐рдХ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдЯрд╛рдЗрдк рдЧрд░рд┐рдПрдХрд╛ рд╢рдмреНрджрдХреЛрд╢рд╣рд░реВ (TypedDict) рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡рд╣рд░реВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рд░ рдЖрд╡рд╢реНрдпрдХ рдирднрдПрдХреЛ рд▓реЗрдмрд▓рд╣рд░реВ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрди рд╕рдореНрднрд╡ рдЫ (рдпрджрд┐ рдХреБрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ False рдорд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рд╕рдмреИ рдШреЛрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫрдиреН)ред class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # рдареАрдХ рдЫ (рд╡рд░реНрд╖ рдХреНрд╖реЗрддреНрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЫ) m3: рдЪрд▓рдЪрд┐рддреНрд░ = {тАЬрд╡рд░реНрд╖тАЭ: реирежреиреи} # рддреНрд░реБрдЯрд┐, рдЖрд╡рд╢реНрдпрдХ рд╢реАрд░реНрд╖рдХ рдлрд┐рд▓реНрдб рднрд░рд┐рдПрдХреЛ рдЫреИрди)
  • рдХрд╛рд░реНрдпрд╕рдореВрд╣ рд╡рд░реНрдЧрд▓рд╛рдИ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рдмрдиреНрдзрдХрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд╛рде asyncio рдореЛрдбреНрдпреБрд▓рдорд╛ рдердкрд┐рдПрдХреЛ рдЫ рдЬреБрди рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╕рдореВрд╣ рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫред рд╕рдореВрд╣рдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдердкреНрдиреЗ рдХрд╛рд░реНрдп create_task() рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЧрд░рд┐рдиреНрдЫред async def main(): async with asyncio.TaskGroup() рдХреЛ рд░реВрдкрдорд╛ tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("рджреБрдмреИ рдХрд╛рд░реНрдпрд╣рд░реВ рдЕрдм рд╕рдореНрдкрдиреНрди рднрдПрдХрд╛ рдЫрдиреНред ред")
  • рдХрдХреНрд╖рд╛рд╣рд░реВ, рд╡рд┐рдзрд┐рд╣рд░реВ рд░ рдХрд╛рд░реНрдпрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ @dataclass_transform рдбреЗрдХреЛрд░реЗрдЯрд░ рдердкрд┐рдпреЛ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрд╛, рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рд╡рд╕реНрддреБрд▓рд╛рдИ @dataclasses.dataclass рдбреЗрдХреЛрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗ рдЬрд╕реНрддреИ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрджрдЫред рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, CustomerModel рд╡рд░реНрдЧ, рдкреНрд░рдХрд╛рд░рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрджрд╛, @dataclasses.dataclass рдбреЗрдХреЛрд░реЗрдЯрд░рдХреЛ рд╕рд╛рде рдХреНрд▓рд╛рд╕ рдЬрд╕реНрддреИ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреЗрдЫред рдЖрдИрдбреА рд░ рдирд╛рдо рдЪрд░рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗ __init__ рд╡рд┐рдзрд┐ рднрдПрдХреЛ рд░реВрдкрдорд╛ред @dataclass_transform() class ModelBase: ... class CustomerModel(ModelBase): id: int name: str
  • рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдорд╛, рдкрд░рдорд╛рдгреБ рд╕рдореВрд╣реАрдХрд░рдг (?>...)) рд░ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдорд╛рддреНрд░рд╛ (*+, ++, ?+, {m,n}+) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдПрдХреЛ рдЫред
  • sys.path рдорд╛ рд╕рдореНрднрд╛рд╡рд┐рдд рд░реВрдкрдорд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╛рдЗрд▓ рдорд╛рд░реНрдЧрд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрд▓рдЧреНрдирдХ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрди "-P" рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рд░ PYTHONSAFEPATH рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдердкрд┐рдпреЛред
  • Windows рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд▓рд╛рдЧрд┐ py.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рд╕реБрдзрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ, "-V:" рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреНрджреИред / "рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд" - ред "
  • C API рдорд╛ рдзреЗрд░реИ рдореНрдпрд╛рдХреНрд░реЛрд╣рд░реВ рдирд┐рдпрдорд┐рдд рд╡рд╛ рд╕реНрдерд┐рд░ рдЗрдирд▓рд╛рдЗрди рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рд╣реБрдиреНрдЫрдиреНред
  • uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev, рд░ sunau рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ рд░ p рд▓рд╛рдИ рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫред 3.13 рд░рд┐рд▓реАрдЬред PyUnicode_Encode* рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд╣рдЯрд╛рдЗрдпреЛред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди