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

ПослС ΠΏΠΎΠ»ΡƒΡ‚ΠΎΡ€Π° Π»Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСдставлСн Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· языка программирования Python 3.8. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ обновлСния для Π²Π΅Ρ‚ΠΊΠΈ Python 3.8 планируСтся Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 18 мСсяцСв. ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ уязвимости Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ 5 Π»Π΅Ρ‚ Π΄ΠΎ октября 2024 Π³ΠΎΠ΄Π°. ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ обновлСния для Π²Π΅Ρ‚ΠΊΠΈ 3.8 Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π· Π² Π΄Π²Π° мСсяца, Π½Π° Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒ Π½Π°ΠΌΠ΅Ρ‡Π΅Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π»ΠΈΠ· Python 3.8.1.

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

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ присвоСния Π²Π½ΡƒΡ‚Ρ€ΠΈ слоТных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° «:=» появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присвоСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ²:

    if (n := len(a)) > 10:

    while (block := f.read(256)) != »:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ синтаксиса задания Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈ пСрСчислСнии Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π²ΠΎ врСмя опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ «/», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, значСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ присвоСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° основС порядка пСрСчислСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²ΠΎ врСмя Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΡ… присвоСниС Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС (синтаксис «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ=Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅»). Π‘ практичСской стороны новая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ позволяСт Π² функциях Π½Π° языкС Python ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° языкС Π‘ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ привязок ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° планируСтся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

    Π€Π»Π°Π³ «/» дополняСт собой Ρ€Π°Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ «*», ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ присвоСниС Π² Ρ„ΠΎΡ€ΠΌΠ΅ «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ=Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅». НапримСр, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ «def f(a, b, /, c, d, *, e, f):» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ «a» ΠΈ «b» ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ присвоСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² порядкС пСрСчислСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ,
    ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ «e» ΠΈ «f», Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· присвоСниС «ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ=Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅», Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ «c» ΠΈ «d» Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… способов:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, с=30, d=40, e=50, f=60)

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π‘ΠΈ API
    для настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ срСдства ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ API ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ встраиваниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния Π½Π° языкС Π‘ΠΈ;

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Vectorcall для Π±ΠΎΠ»Π΅Π΅ быстрого обращСния ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, написанным Π½Π° языкС Π‘ΠΈ. Π’ CPython 3.8 доступ ΠΊ Vectorcall ΠΏΠΎΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ использованиСм, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π² разряд ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ доступных API Π½Π°ΠΌΠ΅Ρ‡Π΅Π½ Π² CPython 3.9;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Runtime Audit Hooks, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ прилоТСниям ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌ Π½Π° языкС Python доступ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ…ΠΎΠ΄Π΅ выполнСния скрипта для провСдСния Π°ΡƒΠ΄ΠΈΡ‚Π° выполняСмых дСйствий (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², использовании трассировки, обращСния ΠΊ сСтСвым сокСтам, запуск ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· exec, eval ΠΈ run_mod);
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ pickle обСспСчСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Pickle 5, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для сСриализации ΠΈ дСсСриализации ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Pickle позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами Python Π² многоядСрных ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ·Π»ΠΎΠ²Ρ‹Ρ… конфигурациях, сократив число ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ копирования памяти ΠΈ примСняя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ задСйствованиС спСцифичных для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сТатия. ΠŸΡΡ‚Π°Ρ вСрсия ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ (out-of-band), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ основного ΠΏΠΎΡ‚ΠΎΠΊΠ° pickle.
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π° чСтвёртая вСрсия ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Pickle, которая ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π²ΡˆΠ΅ΠΉΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ вСрсиСй позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ сокращСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…;
  • Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ typing прСдставлСно нСсколько Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй:
    • Класс TypedDict для ассоциативных массивов, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… для связываСмых с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… явно задаётся информация ΠΎ Ρ‚ΠΈΠΏΠ΅ («TypedDict(‘Point2D’, x=int, y=int, label=str)»).
    • Π’ΠΈΠΏ Literal, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСсколькими ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ значСниями («Literal[‘connected’, ‘disconnected’]»).
    • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ «Final«, Π΄Π°ΡŽΡ‰Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ («pi: Final[float] = 3.1415926536»).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ назначСния кэша для скомпилированных Ρ„Π°ΠΉΠ»ΠΎΠ² с Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ, сохраняСмого Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ Π€Π‘ ΠΈ ΠΎΡ‚Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡƒΡ‚ΡŒ для сохранСния Ρ„Π°ΠΉΠ»ΠΎΠ² с Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ задаётся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PYTHONPYCACHEPREFIX ΠΈΠ»ΠΈ ΠΎΠΏΡ†ΠΈΡŽ «-X pycache_prefix»;
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… сборок Python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ с Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ ABI, Ρ‡Ρ‚ΠΎ позволяСт Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… сборках Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ написанныС Π½Π° языкС БИ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, собранныС для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… выпусков;
  • Π’ f-строках (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ с прСфиксом ‘f’) обСспСчСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° «=» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «f'{expr=}'»), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² тСкст для упрощСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. НапримСр:

    ››› user = ‘eric_idle’
    ››› member_since = date(1975, 7, 31)
    ››› f'{user=} {member_since=}’
    «user=’eric_idle’ member_since=datetime.date(1975, 7, 31)»

  • Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ «continue» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° finally;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ multiprocessing.shared_memory, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСгмСнты раздСляСмой памяти Π² многопроцСссных конфигурациях;
  • На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows рСализация asyncio ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° Π½Π° использованиС класса ProactorEventLoop;
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкции LOAD_GLOBAL ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 40% Π·Π° счёт использования Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ