Выпуск языка программирования Python 3.10

ПослС Π³ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСдставлСн Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ выпуск языка программирования Python 3.10. Новая Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‚ΠΎΡ€Π° Π»Π΅Ρ‚, послС Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ Ρ‚Ρ€ΠΈ с ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ Π³ΠΎΠ΄Π° для Π½Π΅Ρ‘ Π±ΡƒΠ΄ΡƒΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ исправлСния с устранСниСм уязвимостСй.

ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ Π°Π»ΡŒΡ„Π°-тСстированиС Π²Π΅Ρ‚ΠΊΠΈ Python 3.11 (Π² соотвСтствии с Π½ΠΎΠ²Ρ‹ΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ начинаСтся Π·Π° ΠΏΡΡ‚ΡŒ мСсяцСв Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΊ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ Ρ€Π΅Π»ΠΈΠ·Π° достигаСт стадии Π°Π»ΡŒΡ„Π°-тСстирования). Π’Π΅Ρ‚ΠΊΠ° Python 3.11 Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стадии Π°Π»ΡŒΡ„Π°-выпусков Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ сСми мСсяцСв, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ возмоТности ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ исправлСниС ошибок. ПослС этого Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Ρ‘Ρ… мСсяцСв Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ тСстированиС Π±Π΅Ρ‚Π°-вСрсий, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΈ всё Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ошибок. ПослСдниС Π΄Π²Π° мСсяца ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ Π²Π΅Ρ‚ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° стадии ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π° Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ стабилизация.

Π‘Ρ€Π΅Π΄ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² Python 3.10 Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ «match» ΠΈ «case» для сопоставлСния с ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ сопоставлСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Python-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° благодаря возмоТности Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ статичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ². РСализация Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «match», прСдоставляСмый Π² языках Scala, Rust ΠΈ F#, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт сравнСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполнСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ выраТСния со списком ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ², пСрСчислСнных Π² Π±Π»ΠΎΠΊΠ°Ρ… Π½Π° основС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° «case».

    def http_error(status): match status: case 400: return «Bad request» case 401|403|404: return «Not allowed» case 418: return «I’m a teapot» case _: return «Something else»

    Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° распаковка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, списков ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ для привязки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π° основС ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ДопускаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… шаблонов, использованиС Π² шаблонС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… условий «if», ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ масок («[x, y, *rest]»), ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° связок ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, {«bandwidth»: b, «latency»: l} для извлСчСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ «bandwidth» ΠΈ «latency» ΠΈΠ· словаря), извлСчСния подшаблонов (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «:=»), использования ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… констант Π² шаблонС. Π’ классах Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° настройка повСдСния ΠΏΡ€ΠΈ сопоставлСнии ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° «__match__()».

    from dataclasses import dataclass @dataclass class Point: x: int y: int def whereis(point): match point: case Point(0, 0): print(«Origin») case Point(0, y): print(f»Y={y}») case Point(x, 0): print(f»X={x}») case Point(): print(«Somewhere else») case _: print(«Not a point») match point: case Point(x, y) if x == y: print(f»Y=X at {x}») case Point(x, y): print(f»Not on the diagonal») RED, GREEN, BLUE = 0, 1, 2 match color: case RED: print(«I see red!») case GREEN: print(«Grass is green») case BLUE: print(«I’m feeling the blues :(«)

  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ with для разнСсСния Π½Π° нСсколько строк опрСдСлСния ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ контСкстных ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ². Π’ Ρ‚ΠΎΠΌ числС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π·Π°ΠΏΡΡ‚ΡƒΡŽ послС Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ контСкстного ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π² Π³Ρ€ΡƒΠΏΠΏΠ΅: with ( CtxManager1() as example1, CtxManager2() as example2, CtxManager3() as example3, ): …
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎ мСстополоТСнии Π² ΠΊΠΎΠ΄Π΅ ошибок, связанных с Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π² строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°Ρ…. НапримСр, ΠΏΡ€ΠΈ Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкС вмСсто ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ± ошибкС синтаксиса Π² слСдом ΠΈΠ΄ΡƒΡ‰Π΅ΠΉ конструкции, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ подсвСчиваСт ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½ΡƒΡŽ скобку ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ± отсутствии Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°. File «example.py», line 1 expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4, ^ SyntaxError: ‘{‘ was never closed

    Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ спСциализированныС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… синтаксиса: отсутствиС символа «:» ΠΏΠ΅Ρ€Π΅Π΄ Π±Π»ΠΎΠΊΠΎΠΌ ΠΈ Π² словарях, Π½Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° скобками, отсутствиС запятой Π² списках, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° «try» Π±Π΅Π· «except» ΠΈ «finally», использованиС «=» вмСсто «==» Π² сравнСниях, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ *-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² f-строках. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, обСспСчСно Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ всСго ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ выраТСния, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»Π°, ΠΈ Π±ΠΎΠ»Π΅Π΅ явноС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎ контСкстС ошибок, связанных с Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΉ расстановкой отступов. >>> def foo(): … if lel: … x = 2 File «<stdin>», line 3 x = 2 ^ IndentationError: expected an indented block after ‘if’ statement in line 2

    Π’ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ°ΠΌΠΈ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΈΠΌΡ‘Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, обСспСчСн Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. >>> collections.namedtoplo Traceback (most recent call last): File «<stdin>», line 1, in <module> AttributeError: module ‘collections’ has no attribute ‘namedtoplo’. Did you mean: namedtuple?

  • Для ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… инструмСнтов ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² обСспСчСно ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π² событиях трассировки Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° настройка sys.flags.warn_default_encoding для Π²Ρ‹Π²ΠΎΠ΄Π° прСдупрСТдСния ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, связанных с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π² TextIOWrapper ΠΈ open() Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 Π±Π΅Π· явного указания ΠΎΠΏΡ†ΠΈΠΈ ‘encoding=»utf-8″‘ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ASCII). Π’Π°ΠΊΠΆΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ выпускС прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания значСния ‘encoding=»locale»‘ для установки ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° основС Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ.
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ typing, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ срСдства для задания Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ синтаксис «X | Y» для Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ² (Ρ‚ΠΈΠΏ X ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ Y). def square(number: int | float) -> int | float: return number ** 2 эквивалСнтно Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ конструкции: def square(number: Union[int, float]) -> Union[int, float]: return number ** 2
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ typing Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Concatenate ΠΈ пСрСмСнная ParamSpec, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для статичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ использовании Callable. Π’ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ typing Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния TypeGuard для аннотирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ TypeAlias для явного опрСдСлСния псСвдонима Ρ‚ΠΈΠΏΠ°. StrCache: TypeAlias = ‘Cache[str]’ # a type alias
  • Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ zip() Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π»Π°Π³ «strict», ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ осущСствляСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². >>> list(zip((‘a’, ‘b’, ‘c’), (1, 2, 3), strict=True)) [(‘a’, 1), (‘b’, 2), (‘c’, 3)] >>> list(zip(range(3), [‘fee’, ‘fi’, ‘fo’, ‘fum’], strict=True)) Traceback (most recent call last): … ValueError: zip() argument 2 is longer than argument 1
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ aiter() ΠΈ anext() с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ асинхронных Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² функциям iter() ΠΈ next().
  • На 30-40% ускорСна Ρ€Π°Π±ΠΎΡ‚Π° конструкторов str(), bytes() ΠΈ bytearray() ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.
  • Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ число ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ runpy. Команда «python3 -m имя_модуля» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ запускаСтся Π² срСднСм Π² 1.4 Ρ€Π°Π·Π° быстрСС Π·Π° счёт сокращСния ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ с 69 Π΄ΠΎ 51.
  • Π’ инструкции LOAD_ATTR задСйствован ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠΊΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Π΄ΠΎ 36%, Π° со слотами Π΄ΠΎ 44%.
  • ΠŸΡ€ΠΈ сборкС Python с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «—enable-optimizations» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ€Π΅ΠΆΠΈΠΌ «-fno-semantic-interposition», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со сборкой с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «—enable-shared» ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π΄ΠΎ 30%.
  • Π’ модулях hashlib ΠΈ ssl Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenSSL 3.0.0 ΠΈ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° вСрсий OpenSSL ΡΡ‚Π°Ρ€ΡˆΠ΅ 1.1.1.
  • Π£Π΄Π°Π»Ρ‘Π½ старый парсСр, Π½Π° смСну ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΈΡˆΡ‘Π» парсСр PEG (Parsing Expression Grammar). Π£Π΄Π°Π»Ρ‘Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ formatter. Из API asyncio ΡƒΠ΄Π°Π»Ρ‘Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ loop.Π£Π΄Π°Π»Π΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ. Π£Π΄Π°Π»Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Py_UNICODE_str*, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ строками Py_UNICODE*.
  • ОбъявлСн ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ distutils, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ для удалСния Π² Python 3.12. ВмСсто distutils Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ setuptools, packaging, platform, shutil, subprocess ΠΈ sysconfig. Π’ число ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΈ Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… для удалСния ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° структура wstr Π² PyUnicodeObject.

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