ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° програмния Π΅Π·ΠΈΠΊ Python 3.11

Π‘Π»Π΅Π΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ Π½ΠΎΠ² Ρ€Π΅Π»ΠΈΠ· Π½Π° програмния Π΅Π·ΠΈΠΊ Python 3.11. Новата вСрсия Ρ‰Π΅ бъдС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π° Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ сС прСдоставят ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π·Π° уязвимости Π·Π° ΠΎΡ‰Π΅ Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°.

Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π°ΠΏΠΎΡ‡Π½Π° Π°Π»Ρ„Π°-тСстиранС Π½Π° вСрсията Python 3.12 (Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с новия Π³Ρ€Π°Ρ„ΠΈΠΊ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΏΠ΅Ρ‚ мСсСца ΠΏΡ€Π΅Π΄ΠΈ пусканСто Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° вСрсия ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° прСдстоящия Ρ€Π΅Π»ΠΈΠ· достига Π΅Ρ‚Π°ΠΏ Π½Π° Π°Π»Ρ„Π°-тСстиранС). ВСрсията Python 3.12 Ρ‰Π΅ бъдС Π² Π΅Ρ‚Π°ΠΏ Π½Π° Π°Π»Ρ„Π°-издания Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° сСдСм мСсСца, ΠΏΡ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ сС добавят Π½ΠΎΠ²ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΈ Ρ‰Π΅ сС отстраняват Π³Ρ€Π΅ΡˆΠΊΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€ΠΈ мСсСца Ρ‰Π΅ сС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ тСстиранС Π½Π° Π±Π΅Ρ‚Π°-вСрсии, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ добавянСто Π½Π° Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‰Π΅ бъдС Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΎ ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ бъдС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡Π΅Π½ΠΎ Π²ΡŠΡ€Ρ…Ρƒ отстраняванСто Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ. ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΡ‚Π΅ Π΄Π²Π° мСсСца ΠΏΡ€Π΅Π΄ΠΈ пусканСто, вСрсията Ρ‰Π΅ бъдС Π² Π΅Ρ‚Π°ΠΏ Π½Π° кандидатстванС Π·Π° Ρ€Π΅Π»ΠΈΠ·, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ финализация.

Π‘Ρ€Π΅Π΄ Π½ΠΎΠ²ΠΎΠ²ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΡΡ‚Π° Π² Python 3.11 са:

  • Π˜Π·Π²ΡŠΡ€ΡˆΠ΅Π½Π° Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ оптимизация Π½Π° производитСлността. Π’ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ измСнСния, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ускоряванС ΠΈ inline-Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° повиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, с ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° Π±ΡŠΡ€Π·ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (x+x, x*x, x-x, a[i], a[i] = z, f(arg) C(arg), o.method(), o.attr = z, *seq), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ Cinder ΠΈ HotPy. Π’ зависимост ΠΎΡ‚ Π²ΠΈΠ΄Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, сС наблюдава ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° скоростта Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄Π° с 10-60%. Π‘Ρ€Π΅Π΄Π½ΠΎ производитСлността ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° тСстовия Π½Π°Π±ΠΎΡ€ pyperformance Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° с 25%.

    ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° стартиранС Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° с 10-15%. ΠžΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ с ΠΊΠΎΠ΄ ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ сСга сС Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‚ статичСски ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π΄Π°Π»ΠΎ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π°Ρ‚ Π΅Ρ‚Π°ΠΏΠΈΡ‚Π΅ Π½Π° Π΄Π΅ΠΌΠ°Ρ€ΡˆΠ°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° извлСчСния Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΎΡ‚ кСша ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с ΠΊΠΎΠ΄ Π·Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚.

  • ΠŸΡ€ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° трасировката Π½Π° извиквания Π² диагностичнитС ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π΅ осигурСн ΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° информация Π·Π° ΠΈΠ·Ρ€Π°Π·Π°, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Π΅ възникнала Π³Ρ€Π΅ΡˆΠΊΠ° (ΠΏΠΎ-Ρ€Π°Π½ΠΎ сС ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‚Π²Π°ΡˆΠ΅ само Ρ€Π΅Π΄Π° Π±Π΅Π· подробности коя част ΠΎΡ‚ Ρ€Π΅Π΄Π° Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°). Π Π°Π·ΡˆΠΈΡ€Π΅Π½Π° информация Π·Π° трасировката ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΈ Ρ‡Ρ€Π΅Π· API ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ инструкции с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° позиция Π² изходния ΠΊΠΎΠ΄, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° codeobject.co_positions() ΠΈΠ»ΠΈ функцията C API PyCode_Addr2Location(). Π’ΠΎΠ²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростява отстраняванСто Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ, мноТСство извиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ слоТни Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ. Traceback (most recent call last): File Β«calculation.pyΒ», line 54, in result = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: division by zero
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π³Ρ€ΡƒΠΏΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, прСдоставящи Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ няколко Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π—Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° няколко ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ тСхния ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π΅Π½ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ са ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ExceptionGroup ΠΈ BaseExceptionGroup, Π° Π·Π° ΠΈΠ·Π²Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΈΠ·Ρ€Π°Π·Π° Β«except*Β».
  • Π’ класа BaseException Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ add_note(), позволяващ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° тСкстова Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° към ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ добавянС Π½Π° контСкстуална информация, Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ спСциалСн Ρ‚ΠΈΠΏ Self, прСдставляващ тСкущия Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ клас. Self ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²Ρ€ΡŠΡ‰Π°Ρ‚ СкзСмпляр Π½Π° своя клас, ΠΏΠΎ-лСсСн Π½Π°Ρ‡ΠΈΠ½ ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° TypeVar. class MyLock: def __enter__(self) -> Self: self.lock() return self
  • Π”ΠΎΠ±Π°Π²Π΅Π½ спСциалСн Ρ‚ΠΈΠΏ LiteralString, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° само стрингови Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΈ, ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ с Ρ‚ΠΈΠΏΠ° LiteralString (Ρ‚.Π΅. чисти Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΈ Π½ΠΈΠ·ΠΎΠ²Π΅ с Ρ‚ΠΈΠΏΠ° LiteralString, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈ Π½Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π½ΠΈΠ·ΠΎΠ²Π΅ с Ρ‚ΠΈΠΏΠ° str). Π’ΠΈΠΏΡŠΡ‚ LiteralString ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° стрингови Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π°Ρ‚Π° подмяна Π½Π° части ΠΎΡ‚ Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π² ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ уязвимости, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ Π·Π° SQL запитвания ΠΈΠ»ΠΈ shell ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. def run_query(sql: LiteralString) -> … … def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> None: run_query(Β«SELECT * FROM studentsΒ») # ok run_query(literal_string) # ok run_query(Β«SELECT * FROM Β» + literal_string) # ok run_query(arbitrary_string) # Π“Ρ€Π΅ΡˆΠΊΠ° run_query( # Π“Ρ€Π΅ΡˆΠΊΠ° fΒ»SELECT * FROM students WHERE name = {arbitrary_string}Β» )
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Ρ‚ΠΈΠΏ TypeVarTuple, позволяващ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π°Ρ€ΠΈΠ°Ρ‚ΠΈΠ²Π½ΠΈ Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ TypeVar, ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΠ±Ρ…Π²Π°Ρ‰Π° Π½Π΅ Π΅Π΄ΠΈΠ½ Ρ‚ΠΈΠΏ, Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±Ρ€ΠΎΠΉ Ρ‚ΠΈΠΏΠΎΠ²Π΅.
  • Π’ стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ» tomllib с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° парсванС Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° TOML.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ (TypedDict) с Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Required ΠΈ NotRequired Π·Π° опрСдСлянС Π½Π° Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈ Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ всички обявСни ΠΏΠΎΠ»Π΅Ρ‚Π° са Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ Π·Π° попълванС, освСн Π°ΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ total Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° False). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {Β«titleΒ»: Β«Black PantherΒ», Β«yearΒ»: 2018} # OK m2: Movie = {Β«titleΒ»: Β«Star WarsΒ»} # OK (ΠΏΠΎΠ»Π΅Ρ‚ΠΎ year Π΅ Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ) m3: Movie = {Β«yearΒ»: 2022} # Π“Ρ€Π΅ΡˆΠΊΠ°, Π½Π΅ Π΅ попълнСно Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅ title)
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»Π° asyncio Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ клас TaskGroup с рСализация Π½Π° асинхронСн контСкстСн ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€, Ρ‡Π°ΠΊΠ°Ρ‰ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€ΡƒΠΏΠ° Π·Π°Π΄Π°Ρ‡ΠΈ. ДобавянСто Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ Π² Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° create_task(). async def main(): async with asyncio.TaskGroup() as tg: task1 = tg.create_task(some_coro(…)) task2 = tg.create_task(another_coro(…)) print(«И Π΄Π²Π΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ сСга са Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ.Β»)
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ Π·Π° класовС, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ @dataclass_transform, ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ систСмата Π·Π° статична ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΠ±Π΅ΠΊΡ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @dataclasses.dataclass. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΊΠ»Π°ΡΡŠΡ‚ CustomerModel ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Ρ‰Π΅ бъдС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠΎ аналогия с клас с Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @dataclasses.dataclass, Ρ‚.Π΅. ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‰ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__, допускащ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ id ΠΈ name. @dataclass_transform() class ModelBase: … class CustomerModel(ModelBase): id: int name: str
  • Π’ рСгулярнитС ΠΈΠ·Ρ€Π°Π·ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½Π° Π³Ρ€ΡƒΠΏΠ° ((?>…)) ΠΈ Ρ€Π΅Π²Π½ΠΈΠ²ΠΈ (possessive) ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ (*+, ++, ?+, {m,n}+).
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опцията Π² командния Ρ€Π΅Π΄ Β«-PΒ» ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата PYTHONSAFEPATH Π·Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ добавянС Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ опасни Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π° към sys.path.
  • Π‘ΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° py.exe Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Windows, която ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° синтаксиса Β«-V:<company>/{tag}Β» Π² допълнСниС към Β«-<major>.<minor>Β».
  • Много ΠΎΡ‚ макроситС Π² C API са ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ΠΈ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΈΠ»ΠΈ статични inline-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • ОбявСни са Π·Π° остарСли ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ Π² вСрсия Python 3.13 ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev ΠΈ sunau. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ са Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ PyUnicode_Encode*.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster