Famoahana ny fiteny fandaharana Python 3.11

Taorian'ny taonan'ny fampandrosoana dia navoaka ny famoahana lehibe ny fiteny fandaharana Python 3.11. Ny sampana vaovao dia hotohanana mandritra ny iray taona sy tapany, ary aorian'izay mandritra ny telo taona sy tapany dia hisy fanamboarana ho azy mba hanafoanana ny vulnerability.

Nandritra izany fotoana izany, nanomboka ny fitsapana alpha ny sampana Python 3.12 (araka ny fandaharam-pampandrosoana vaovao, ny asa amin'ny sampana vaovao dia manomboka dimy volana alohan'ny famoahana ny sampana teo aloha ary tonga amin'ny dingana fitsapana alpha amin'ny fotoana famoahana manaraka. ). Ny sampana Python 3.12 dia hivoaka amin'ny alfa mandritra ny fito volana, izay hampidirana endri-javatra vaovao ary hapetraka ny bug. Aorian'izany dia hozahan-toetra mandritra ny telo volana ny dikan-teny beta, izay mandrara ny fampidirana endri-javatra vaovao ary hojerena amin'ny fanamboarana ny bug. Nandritra ny roa volana farany talohan'ny famoahana, ny sampana dia ho eo amin'ny sehatry ny kandidΓ  famotsorana, izay hanatanterahana ny fanamafisana farany.

Ny fanampiana vaovao amin'ny Python 3.11 dia ahitana:

  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ измСнСния, связанныС с ускорСниСм ΠΈ 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(Β«Both tasks have completed now.Β»)
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ @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*.

Source: opennet.ru

Add a comment