ИзданиС Π½Π° програмния Π΅Π·ΠΈΠΊ Python 3.11

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

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

Π‘Ρ€Π΅Π΄ новоститС, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π² Python 3.11:

  • Π‘Π΅ΡˆΠ΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ оптимизация Π½Π° производитСлността. Новият ΠΊΠ»ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ускоряванС ΠΈ ΠΈΠ½Π»Π°ΠΉΠ½-Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°Π½Π΅ Π½Π° извиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±ΡŠΡ€Π·ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (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( ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π°_строка: str, заявка_строка: LiteralString, ΠΈΠΌΠ΅_Π½Π°_таблиця: 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