ΠΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π Π°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π²Π·ΡΡ ΠΈΠ· Π½Π°ΡΠ΅ΠΉ Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡΠ½ΠΎΠΉ email-ΡΠ°ΡΡΡΠ»ΠΊΠΈ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ Python. ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ Π² ΡΠΈΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΡΡ , ΠΊΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡ.
ΠΠ½Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π»ΡΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ Π²Π°ΠΆΠ½ΡΡ Π½Π°Π²ΡΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- ΠΠΎΠ²ΡΡΠΈΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅ΡΠ½Π΅ΠΌ ΠΎΠΏΡΡΠ΅ ΠΎΠ±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅ ΠΈ Π΄ΠΎΠ»Π³ΠΎΠ²Π΅ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
- Π£ΡΠΊΠΎΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΠ΅ΡΠ°ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
- Π£ΠΏΡΠΎΡΡΠΈΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΠ΅Π²ΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΠΈ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π»Π΅Π³ΡΠ΅ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±Ρ. ΠΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠΈΡΠΊ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³Π° β ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΠΌΠΈ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
π ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°
ΠΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°Β»
ππ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ Python
ΠΠΎΠ΄ΡΡΠ½ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ±Π΅ΡΠ° ΠΏΠΎ PythonΒ»
π𧩠ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ Python
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ Python Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΠΎ PythonΒ»
ΠΠΎΡ ΡΡΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π½Π°Π±ΠΎΡ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»:
- Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ Python Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π΅ΡΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ mise ΠΈΠ»ΠΈ pyenv Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Python β ΠΎΠ½ΠΈ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΡΠ·ΡΠΊΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Π±Π΅Π· Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β Development Containers.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pipx Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pipx Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅.
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» pyproject.toml Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° β Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ .
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ src ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ². ΠΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ, Π½ΠΎ PDM ΠΈ Hatch ΡΠΏΡΠΎΡΠ°ΡΡ Π·Π°Π΄Π°ΡΡ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈ Π½Π°Π±ΠΎΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π΄Π»Ρ Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² β Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ².
- ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»Ρ requirements.txt Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΡΡΠ΅Π΄Ρ β Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ pip. ΠΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ PDM ΠΈΠ»ΠΈ Hatch Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ Π»ΠΈΠ½ΡΠ΅Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΠΎΡΠΈΠ±ΠΊΠΈ. Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ Python-ΠΊΠΎΠ΄Π° β Black, Π° ΡΠ°ΠΌΡΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π»ΠΈΠ½ΡΠ΅Ρ β flake8. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡ Ρ ΡΡΠΏΠ΅Ρ ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠΎΡΠ½ΡΠΌ ΠΈ Π±ΡΡΡΡΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ β Ruff.
- ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ pytest Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° Π² ΡΠΈΡΡΠ°ΡΠΈΡΡ , Π³Π΄Π΅ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ unittest.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ PyInstaller Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». Π ΡΠ²ΠΎΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π² Π²ΠΈΠ΄Π΅ wheel, ΡΡΠΎΠ±Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pipx ΠΈ pip-sync.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² β ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π²Π°ΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ . ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ mypy, Π° Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Ρ Pydantic β ΠΏΠ»Π°Π³ΠΈΠ½.
- Π€ΠΎΡΠΌΠ°ΡΠΈΡΡΠΉΡΠ΅ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ f-ΡΡΡΠΎΠΊ, Π° Π½Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ %, str.format() ΠΈΠ»ΠΈ str.Template().
- ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ datetime, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΡ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·ΠΎΠ½Π°Ρ . ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Python ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ datetime, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·ΠΎΠ½Ρ.
- ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ enum ΠΈΠ»ΠΈ collections.namedtuple() Π΄Π»Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π½Π°Π±ΠΎΡΠΎΠ² ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΠ°ΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠΎΡΠ°ΠΆΠΈΠ²Π°ΡΡ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ collections.abc Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ. ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² collections.abc ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π½Π° C ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ.
- ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ breakpoint() Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΌΠ°Π½Π΄Π° print() ΡΠ΄ΠΎΠ±Π½Π° Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π½ΠΎ Π² ΡΠΊΡΠΈΠΏΡΡ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
- ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΠΎΡΠΌΠ°Ρ TOML Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² β Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠΌΠ°Ρ JSON Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ async ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Gunicorn. Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ.
- ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΠΉΡΠ΅ Π²Π²ΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ argparse. ΠΠΎΠ΄ΡΠ»Ρ argparse ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π²ΠΎΠ΄Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ optparse ΠΈ getopt.
- ΠΠ»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΡΠ΅ΠΉ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ pathlib, Π° Π½Π΅ ΡΡΡΠΎΠΊΠΈ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ os.scandir() Π²ΠΌΠ΅ΡΡΠΎ os.listdir(). Π€ΡΠ½ΠΊΡΠΈΡ os.scandir() Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅, ΡΠ΅ΠΌ os.listdir().
- ΠΠ°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ subprocess. ΠΠΎΠ΄ΡΠ»Ρ subprocess ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΡΡΠΊΠ° Π²Π½Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ spawn, popen2 ΠΈ popen3.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ httpx Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΊΠ΅Ρ httpx ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ HTTP/2 ΠΈ async, ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ requests, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ HTTP 1.1.
***
Π₯ΠΎΡΠ΅ΡΡ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΈΠ½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° Python? ΠΠ° Π½Π°ΡΠ΅ΠΌ ΠΊΡΡΡΠ΅ ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΡΡΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ°, Π½ΠΎ ΠΈ Π½Π°ΡΡΠΈΡΡΡΡ ΠΌΡΡΠ»ΠΈΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΡΠ΅ΡΠ°Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π§ΡΠΎ ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ:
- Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΡΡ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ²
- ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ΅ΠΎΡΠΈΡ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΠΏΡΡΠ½ΡΡ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Π΅ΠΉ
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΆΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Ρ ΠΎΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ
(function () { let link = document .getElementById ("1f0787ac-2102-48a3-8415-b8c2f96535b1-https://proglib.io/w/cd5d512c-13"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, { method: "POST", body: data }) .then (function (res) {}) .catch (function (err) { console .error (err); }); }) })();