Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π·Π½Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ Π΅Π·ΠΈΠΊ 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
