Π‘Π»Π΅Π΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Π·Π½Π°ΡΠΈΠΌΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Python 3.11 Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ. ΠΠΎΠ²ΠΈΡΡ ΠΊΠ»ΠΎΠ½ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π·Π° ΠΎΡΠ΅ ΡΡΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅.
Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π°ΠΏΠΎΡΠ½Π° Π°Π»ΡΠ° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½Π° Π½Π° Python 3.12 (Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½ΠΎΠ²ΠΈΡ Π³ΡΠ°ΡΠΈΠΊ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½ Π·Π°ΠΏΠΎΡΠ²Π° ΠΏΠ΅Ρ ΠΌΠ΅ΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΠΎΠ½ ΠΈ Π΄ΠΎΡΡΠΈΠ³Π° Π΅ΡΠ°ΠΏΠ° Π½Π° Π°Π»ΡΠ° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ). ΠΠ»ΠΎΠ½ΡΡ Π½Π° Python 3.12 ΡΠ΅ Π±ΡΠ΄Π΅ Π² Π°Π»ΡΠ° Π²Π΅ΡΡΠΈΡ Π·Π° ΡΠ΅Π΄Π΅ΠΌ ΠΌΠ΅ΡΠ΅ΡΠ°, ΠΏΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π±Π΅ΡΠ° Π²Π΅ΡΡΠΈΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ΅ΡΡΠ²Π°Π½ΠΈ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ°, ΠΏΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΎ ΠΈ ΡΡΠ»ΠΎΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΡΠ½Π°ΡΠΎ Π½Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π° ΠΌΠ΅ΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ ΠΊΠ»ΠΎΠ½ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π° Π΅ΡΠ°ΠΏ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»Π½Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠΎΠ²ΠΈΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΠΌ Python 3.11 Π²ΠΊΠ»ΡΡΠ²Π°Ρ:
- ΠΠ΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°Π±ΠΎΡΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. ΠΠΎΠ²ΠΈΡΡ ΠΊΠ»ΠΎΠ½ Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΡΡΠ·ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΈ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (x+x, x*x, xx, 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(). ΠΡΠΎΠΌΡΠ½Π°ΡΠ° ΠΏΡΠ°Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Ρ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ΅ΡΠ½ΠΈΠΊΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ. ΠΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅): Π€Π°ΠΉΠ» "calculation.py", ΡΠ΅Π΄ 54, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ = (x / y / z) * (a / b / c) ~~~~~~^~~ ZeroDivisionError: Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΡΠ»Π°
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π³ΡΡΠΏΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°Π²Π΅Π΄Π½ΡΠΆ. ΠΠ° Π΄Π° ΡΠ΅ Π³ΡΡΠΏΠΈΡΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π° ΡΠ΅ ΡΡΠ±Π΅ΡΠ°Ρ Π·Π°Π΅Π΄Π½ΠΎ, Π±ΡΡ Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ExceptionGroup ΠΈ BaseExceptionGroup ΠΈ ΠΈΠ·ΡΠ°Π·ΡΡ βexcept*β Π±Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½, Π·Π° Π΄Π° ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ Π³ΡΡΠΏΠ°.
- ΠΠ΅ΡΠΎΠ΄ΡΡ add_note() Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΡΠΌ ΠΊΠ»Π°ΡΠ° BaseException, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²Π° Π±Π΅Π»Π΅ΠΆΠΊΠ° ΠΊΡΠΌ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΡΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π½Π΅ Π΅ Π½Π°Π»ΠΈΡΠ½Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Ρ Π²ΡΡΠ»Π΅Π½ΠΎ.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠΈΠΏ Self Π·Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ°ΡΡΠ΅Π½ ΠΊΠ»Π°Ρ. Self ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΡΡΠ°Ρ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΡ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΊΠ»Π°Ρ ΠΏΠΎ ΠΏΠΎ-ΠΏΡΠΎΡΡ Π½Π°ΡΠΈΠ½ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° TypeVar. ΠΊΠ»Π°Ρ MyLock: def __enter__(self) -> Self: self.lock() return self
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΡΠΈΠΏ LiteralString, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ°ΠΌΠΎ Π½ΠΈΠ·ΠΎΠ²ΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Ρ ΡΠΈΠΏΠ° LiteralString (Ρ.Π΅. Π³ΠΎΠ»ΠΈ ΠΈ LiteralString Π½ΠΈΠ·ΠΎΠ²Π΅, Π½ΠΎ Π½Π΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ str Π½ΠΈΠ·ΠΎΠ²Π΅). Π’ΠΈΠΏΡΡ LiteralString ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π½Π° Π½ΠΈΠ· ΠΊΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎΡΠΎ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΡΡΠΈ ΠΎΡ Π½ΠΈΠ·ΠΎΠ²Π΅, Π² ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ Π·Π° SQL Π·Π°ΡΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°. def run_query(sql: LiteralString) -> ... ... def caller( arbitrary_string: str, query_string: LiteralString, table_name: LiteralString, ) -> ΠΡΠΌΠ°: run_query("SELECT * FROM students") # ok run_query(literal_string) # ok run_query( "SELECT * FROM" + literal_string) # ok run_query(arbitrary_string) # ΠΡΠ΅ΡΠΊΠ° run_query( # Error f"SELECT * FROM students WHERE name = {arbitrary_string}" )
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠΈΠΏΡΡ TypeVarTuple, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ ΡΠΎΡΠΌΠΈ, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ TypeVar, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΊΡΠΈΠ²Π°Ρ Π½Π΅ Π΅Π΄ΠΈΠ½ ΡΠΈΠΏ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±ΡΠΎΠΉ ΡΠΈΠΏΠΎΠ²Π΅.
- Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΠΌΠΎΠ΄ΡΠ»Π° tomllib Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° TOML ΡΠΎΡΠΌΠ°Ρ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈ ΡΠ΅ΡΠ½ΠΈΡΠΈ (TypedDict) Ρ Π΅ΡΠΈΠΊΠ΅ΡΠΈ Required ΠΈ NotRequired, Π·Π° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΠΈ Π½Π΅Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΡΠΈΡΠΊΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° ΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ, Π°ΠΊΠΎ ΠΎΠ±ΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° False). class Movie(TypedDict): title: str year: NotRequired[int] m1: Movie = {"title": "Black Panther", "year": 2018} # OK m2: Movie = {"title": "Star Wars" } # OK (ΠΏΠΎΠ»Π΅ΡΠΎ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ) m3: Π€ΠΈΠ»ΠΌ = {βΠ³ΠΎΠ΄ΠΈΠ½Π°β: 2022} # ΠΡΠ΅ΡΠΊΠ°, Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅ Π·Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π΅ Π΅ ΠΏΠΎΠΏΡΠ»Π½Π΅Π½ΠΎ)
- ΠΠ»Π°ΡΡΡ TaskGroup Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π° asyncio Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ° ΠΎΡ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π·Π°Π΄Π°ΡΠΈ ΠΊΡΠΌ Π³ΡΡΠΏΠ° ΡΡΠ°Π²Π° ΡΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Π° create_task(). async def main(): async Ρ asyncio.TaskGroup() ΠΊΠ°ΡΠΎ tg: task1 = tg.create_task(some_coro(...)) task2 = tg.create_task(another_coro(...)) print("Π Π΄Π²Π΅ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π²Π΅ΡΠ΅ ΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈ .")
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π½Π° @dataclass_transform Π·Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ ΡΠΈΠΏ ΡΡΠ΅ΡΠΈΡΠ° ΠΎΠ±Π΅ΠΊΡΠ°, ΡΡΠΊΠ°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Π½Π° @dataclass.dataclass. Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΡ CustomerModel, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΡΠΈΠΏΠΎΠ²Π΅, ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΊΠ»Π°Ρ Ρ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @dataclasses.dataclass, Ρ.Π΅. ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄ __init__, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ id ΠΈ name. @dataclass_transform() ΠΊΠ»Π°Ρ ModelBase: ... ΠΊΠ»Π°Ρ CustomerModel(ModelBase): id: int ΠΈΠΌΠ΅: str
- Π ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π°ΡΠΎΠΌΠ½ΠΎ Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ ((?>...)) ΠΈ ΠΏΡΠΈΡΠ΅ΠΆΠ°ΡΠ΅Π»Π½ΠΈ ΠΊΠ²Π°Π½ΡΠΎΡΠΈ (*+, ++, ?+, {m,n}+).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ "-P" ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° PYTHONSAFEPATH Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΠΏΡΡΠΈΡΠ° ΠΊΡΠΌ sys.path.
- ΠΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° py.exe Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Windows Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°, Π΄ΠΎΠ±Π°Π²ΡΠΉΠΊΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° β-V:β. / " Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ "- . "
- ΠΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΈ Π² C API ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Ρ Π² ΡΠ΅Π΄ΠΎΠ²Π½ΠΈ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
- ΠΠΎΠ΄ΡΠ»ΠΈΡΠ΅ uu, cgi, pipes, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev ΠΈ sunau ΡΠ° ΠΎΡΡ Π²ΡΡΠ»Π΅Π½ΠΈ ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ Π² Python 3.13 ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ PyUnicode_Encode*.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru