ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π·Π° ΠΏΡΡΡ, ΠΊΠΎΠΉΡΠΎ Dropbox ΠΈΠ·ΠΌΠΈΠ½Π° ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠ° Π·Π° Python ΠΊΠΎΠ΄.
β ΠΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΡΠ°ΡΡΠΈ:
ΠΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° Π²ΡΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄
ΠΡΡΠ³ΠΎ Π³ΠΎΠ»ΡΠΌΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅Π»ΡΡΠ²ΠΎ (ΠΈ Π²ΡΠΎΡΠΎΡΠΎ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΎ ΠΏΡΠΈΡΠ΅ΡΠ½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄ Π°Π½ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ Π²ΡΡΡΠ΅ΡΠ½ΠΎ) Π±Π΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΊΠΎΠ΄, ΠΎΠ±Ρ Π²Π°Π½Π°Ρ ΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π½Π° ΡΠΈΠΏΠ° Π² Dropbox. ΠΠΏΠΈΡΠ°Ρ ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π²ΡΠ²Π΅Π΄Π΅Π½Π°ΡΠ° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° Π΄ΠΎ ΡΠΎΠΊΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΈΠ»ΠΈΡΡΠ° Π½Π° Π΅ΠΊΠΈΠΏΠ° Π½Π° mypy Π²ΡΡΡ Ρ ΡΡΠ°ΡΠΈΡΠ΅Π½ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ ΡΠΈΠΏ ΠΈΠ·Π²ΠΎΠ΄. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅, ΡΠ΅ Π½ΡΠΌΠ° ΠΏΡΠΎΡΡΠ° ΠΏΠ΅ΡΠ΅Π»ΠΈΠ²ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, Π½ΠΎ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ Π±ΡΡΠ·ΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π°Π½ΠΎΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ ΡΡΠ΅Π· ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° Π½Π°ΡΠ΅ΡΠΎ Π½Π°ΠΉ-Π³ΠΎΠ»ΡΠΌΠΎ Python Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (Ρ Π±Π΅ΠΊΠ΅Π½Π΄ ΠΊΠΎΠ΄) ΠΈΠΌΠ° Π±Π»ΠΈΠ·ΠΎ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° Π°Π½ΠΎΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄. Π Π°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ ΠΊΠΎΠ΄ Π±Π΅ΡΠ΅ Π·Π°Π²ΡΡΡΠ΅Π½Π° Π·Π° ΠΎΠΊΠΎΠ»ΠΎ ΡΡΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Mypy Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΎΡΡΠ΅ΡΠΈ Π·Π° ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΈΡΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π°Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΠ° ΠΏΡΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΠΎΡΡΠ΅ΡΠΈ Π·Π° ΠΊΠΎΠ΄ Ρ Π½Π΅ΡΡΠ½ΠΎΡΠΈ Π² ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏ Any
Π² Π°Π½ΠΎΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ, ΠΈΠ»ΠΈ Ρ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ°Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏ. ΠΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠ° Π² Dropbox, Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΠΈΠ½Π΅ΡΠΎΡ
ΠΌΠ΅ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π½Π° ΡΠΈΠΏ (ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΌΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) Π·Π° Π½ΡΠΊΠΎΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π² ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Python
ΠΠΈΠ΅ Π²Π½Π΅Π΄ΡΠΈΡ
ΠΌΠ΅ (ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Ρ
ΠΌΠ΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ PEP) Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΎΡ ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΏΠΎ-ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° Π½ΡΠΊΠΎΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Python. ΠΠ°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΎΠ²Π° Π΅ TypeDict
, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ΅ΡΠ½ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Π½ΠΈΠ·ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, Π²ΡΠ΅ΠΊΠΈ ΡΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΎΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΈΠΏ. Π©Π΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Π΄Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π°ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΎΡ ΡΠΈΠΏΠΎΠ²Π΅. Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π½ΠΈ ΡΡΡΠΏΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΈΡΠ»Π΅Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° Python.
ΠΡΠΎΠΉ ΡΠ΅Π΄ΠΎΠ²Π΅ Ρ ΠΏΠΎΡΡΠ½Π΅Π½ ΠΊΠΎΠ΄: ΡΡΡΠ²ΡΡ
ΠΡΠΎΠΉ ΡΠ΅Π΄ΠΎΠ²Π΅ Ρ ΠΏΠΎΡΡΠ½Π΅Π½ ΠΊΠΎΠ΄: ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ±Ρ Π±ΡΠΎΠΉ ΡΠ΅Π΄ΠΎΠ²Π΅ Ρ Π°Π½ΠΎΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄
ΠΡΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π½Π΅ΡΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅, Π·Π° Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π°Π½ΠΎΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄ Π² Dropbox:
Π‘ΡΡΠΎΠ³ΠΎΡΡ Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡ ΠΌΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΡΡΡΠΎΠ³ΠΎΡΡ Π½Π° Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ² ΠΊΠΎΠ΄. ΠΠ°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ ΡΡΡ ΡΡΠ²Π΅ΡΠΈ Π·Π° linter, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°Ρ Π½ΡΠΊΠΎΠΈ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ. Π‘Π΅Π³Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°ΠΌΠ΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ Π² Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Python ΠΈ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
ΠΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΡΠ΅ΡΠΈ. ΠΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π½Π° Π΅ΠΊΠΈΠΏΠΈΡΠ΅ ΡΠ΅Π΄ΠΌΠΈΡΠ½ΠΈ ΠΎΡΡΠ΅ΡΠΈ Π·Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π²Π°ΠΌΠ΅ ΡΡΠ²Π΅ΡΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π°Π½ΠΎΡΠΈΡΠ°Π½ΠΎ ΠΏΡΡΠ²ΠΎ.
ΠΠΎΠΏΡΠ»ΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° mypy. ΠΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° mypy Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΈ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΡΠΌΠ΅ Ρ Π΅ΠΊΠΈΠΏΠΈ, Π·Π° Π΄Π° ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ΠΌ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅.
Π°Π½ΠΊΠ΅ΡΠΈ. ΠΡΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΡΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π΄ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅, Π·Π° Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠΎΡΠΎΠ²ΠΈ ΡΠΌΠ΅ Π΄Π° ΡΡΠΈΠ³Π½Π΅ΠΌ Π΄ΠΎΡΡΠ° Π΄Π°Π»Π΅Ρ Π² ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ (Π΄ΠΎΡΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½ΠΎΠ² Π΅Π·ΠΈΠΊ, Π·Π° Π΄Π° ΡΡΠΊΠΎΡΠΈΠΌ mypy!).
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΠΈΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡ ΠΌΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° mypy, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ daemon ΠΈ mypyc. Π’ΠΎΠ²Π° Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π³Π»Π°Π΄ΡΡ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ°, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅, ΠΈ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ. Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° mypy Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π² Dropbox. Π’ΠΎΠ²Π° Π²ΠΊΠ»ΡΡΠ²Π° PyCharm, Vim ΠΈ VS Code. Π’ΠΎΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. Π’Π΅Π·ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ° ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ ΠΏΡΠΈ Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΊΠΎΠ΄.
Π‘ΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·. Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·. Π’ΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ Π² ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡ ΡΠΈΠΏ ΠΊΠΎΠ΄ Π±Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΡ.
ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΠ½ΠΎΠ³ΠΎ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° SQLAlchemy. Π’ΠΎΠΉ ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° Python, ΠΊΠΎΠΈΡΠΎ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ PEP 484 Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠΈΠ΅, Π² ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ PEP 561, ΡΡΠ·Π΄Π°Π΄ΠΎΡ
ΠΌΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΠΌΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ
ΠΌΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° mypy (
Π’ΡΡΠ΄Π½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΅ΡΠ½Π°Ρ ΠΌΠ΅
ΠΡΡΡΡ Π΄ΠΎ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° Π²ΡΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π±ΠΈΠ» Π»Π΅ΡΠ΅Π½ Π·Π° Π½Π°Ρ. ΠΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΡ ΡΠ΅ Π½Π°ΡΡΠΊΠ½Π°Ρ ΠΌΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΠΏΠΊΠΈ ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΡΠ΅ΡΠΊΠΈ. Π’ΠΎΠ²Π° ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΅ΡΠ½Π°Ρ ΠΌΠ΅. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠ°Π·ΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π·Π° ΡΡΡ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
ΠΠΈΠΏΡΠ²Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ°ΠΏΠΎΡΠ½Π°Ρ
ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ, ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ
ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π½Π΅ Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ. Π€Π°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π±ΡΡ
Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΊΡΠΌ ΡΠΏΠΈΡΡΠΊΠ° Π·Π° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ Π² ΡΡΡ
ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ
Π° ΠΏΡΡΠ²ΠΈΡΠ΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΠΊΠΎ Π½Π΅ΡΠΎ Π±Π΅ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΎ ΠΎΡ ΠΌΠΎΠ΄ΡΠ», Π½Π°ΠΌΠΈΡΠ°Ρ ΡΠ΅ ΠΈΠ·Π²ΡΠ½ ΠΎΠ±Ρ
Π²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ°, ΡΠΎΠ³Π°Π²Π° Π³ΠΎΠ²ΠΎΡΠΈΡ
ΠΌΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΠΎ Any
, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΠ° ΡΠ΅ΡΡΠ²Π°Π½ΠΈ. Π’ΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° ΡΠΎΡΠ½ΠΎΡΡ ΠΏΡΠΈ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π² ΡΠ°Π½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠΈ ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°ΡΠΎ Π΄ΠΎΠ±ΡΠ΅ Π΄ΠΎΡΠ΅Π³Π°, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΠΈΠΏΠΈΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ Π΅, ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΡΠΌ ΠΎΠ±Ρ
Π²Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π° ΡΠ°Π·ΠΊΡΠΈΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² Π΄ΡΡΠ³ΠΈ ΡΠ°ΡΡΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π°. Π Π½Π°ΠΉ-Π»ΠΎΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π²Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΊΠΎΠ΄Π° Π±ΡΡ
Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ, Π² ΠΊΠΎΠΈΡΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ Π΄ΡΡΠ³, ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π²Π΅ΡΠ΅ Π±ΡΡ
Π° ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ, ΡΠ΅ ΠΎΠΊΠ°Π·Π°, ΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ° Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Π΅Π΄ΠΈΠ½ Ρ Π΄ΡΡΠ³. Π’ΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π°Π½ΠΎΡΠ°ΡΠΈΠΈΡΠ΅. ΠΠΎΠ³Π»Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ Π½Π°Π·Π°Π΄ ΡΠ΅Π³Π°, ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ Π΅ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΡΠΌ Π·ΠΎΠ½Π°ΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠ° Π½Π° mypy ΠΏΠΎ-ΡΠ°Π½ΠΎ. Π’ΠΎΠ²Π° Π±ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°.
ΠΠ½ΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°Ρ ΠΊΠΎΠ΄. ΠΠΎΠ³Π°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅, ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΊΠΎΠ΄ Π½Π° Python. ΠΠ΅ΡΠ΅ ΡΡΠ½ΠΎ, ΡΠ΅ Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π»ΠΈΡ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π½Π΅ Π±Π΅ΡΠ΅ Π»Π΅ΡΠ½Π° Π·Π°Π΄Π°ΡΠ°. Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½Π°ΡΠ΅ΡΠ΅Π½ PyAnnotate, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ±ΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΊΡΠΌ Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΠ±ΡΠ°Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° Π½Π΅ ΡΠΌΠ΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Π»ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. Π‘ΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠ° Π±Π΅ΡΠ΅ Π±Π°Π²Π½ΠΎ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ½ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΈ. ΠΠΈΡΠ»Π΅Ρ ΠΌΠ΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠ° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΌΠ°Π»ΡΠΊ ΠΎΠ±Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Π½ΠΎ ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° Π½Π΅ Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ, Π·Π°ΡΠΎΡΠΎ ΠΈ Π΄Π²Π°ΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π±ΡΡ Π° ΡΠ²ΡΡΠ΄Π΅ ΡΠΈΡΠΊΠΎΠ²ΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π΅ ΡΡΡΠ½ΠΎ Π°Π½ΠΎΡΠΈΡΠ°Π½ ΠΎΡ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠΈ. ΠΠ° Π΄Π° Π½Π°ΡΠΎΡΠΈΠΌ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π² ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΠΏΠΎΡΠΎΠΊΠ°, Π½ΠΈΠ΅ ΠΈΠ·Π³ΠΎΡΠ²ΡΠΌΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π·Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²Π°ΠΆΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π°Π½ΠΎΡΠΈΡΠ°Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΡ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏ Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ΅Π½ ΠΌΠΎΠ΄ΡΠ», ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° ΡΡΠΎΡΠΈΡΠΈ ΠΌΠ΅ΡΡΠ°. ΠΠΎ ΡΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π·Π°ΠΌΠ΅Π½Ρ Ρ Π½ΠΎΠ²Π°, Π²Π΅ΡΠ΅ Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½Π° Π·Π° Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅. ΠΠΈΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΠΏ Π·Π° Π½Π°ΡΠ»Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄.
Π¦ΠΈΠΊΠ»ΠΈΡΠ½ΠΈ Π²Π½ΠΎΡΠΈ. ΠΠΎ-Π³ΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡ Π·Π° ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈ (βΠ·Π°ΠΏΠ»Π΅ΡΠ΅Π½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈβ), ΡΠΈΠ΅ΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ Π·Π°ΡΡΡΠ΄Π½ΠΈ ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° mypy. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠΈΠ»Π΅Π½ΠΎ, Π·Π° Π΄Π° Π½Π°ΠΊΠ°ΡΠ°ΠΌΠ΅ mypy Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΈΠ΄ΠΈΠΎΠΌΠΈ, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½ΠΈΡ. ΠΠ°ΡΠΊΠΎΡΠΎ Π·Π°Π²ΡΡΡΠΈΡ ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΡΠ΅Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π½Π° mypy ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΠΊΡΠ»ΡΡΠ½ΠΎΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅. Π’Π΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΡΡΡΠ½ΠΎΡΡ ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°Ρ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π½Π½ΠΈΡΠ΅ Π΄Π½ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΎΡ Alore, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈΡΡ Π΅Π·ΠΈΠΊ, Π²ΡΡΡ Ρ ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ mypy ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° Alore ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅. Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΡ mypy Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΈΠ» Π½ΡΠΊΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΏΠΎ-ΡΠ°Π½Π½Π°ΡΠ° ΡΠΈ ΠΏΡΠΎΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΠΊΠΎΡΡΠΎ Π±Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° Alore). Python Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΊΡΡΠ³ΠΎΠ²ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅, Π³Π»Π°Π²Π½ΠΎ Π·Π°ΡΠΎΡΠΎ ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ ΡΠ° Π΄Π²ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π½Π° ΡΠΈΠΏ. Mypy Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π°, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠΈΠΊΡΠ»Π° Π½Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π°. Π ΠΠ»ΠΎΡΠ΅ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° Π½Π΅ΡΡΠ½ΠΎΡΠΈ. ΠΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π²Π·Π΅ΡΠΈ Π² ΡΠ°Π½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ Π½Π΅ΠΏΡΠΈΡΡΠ½Π° ΠΈΠ·Π½Π΅Π½Π°Π΄Π° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ: ΠΏΡΡΡΡ ΠΊΡΠΌ 5 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ ΠΈ Π½ΠΎΠ²ΠΈ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠΈ
ΠΡΠΎΠ΅ΠΊΡΡΡ mypy ΠΈΠ·Π²ΡΡΠ²Ρ Π΄ΡΠ»ΡΠ³ ΠΏΡΡ - ΠΎΡ ΡΠ°Π½Π½ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΡΠΈΠΏΠΎΠ²Π΅. Π‘ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° mypy ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ ΡΡΠ²Π΅ΡΠΈ Π½Π° Python Π±ΡΡ Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ. Π’Π΅Π·ΠΈ Π΄Π½ΠΈ ΡΠ΅ Π΅ ΡΠ°Π·Π²ΠΈΠ»Π° ΠΌΠΎΡΠ½Π° Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π½Π° Python. ΠΠΌΠ° ΠΌΡΡΡΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΠ΄ΡΡΠΆΠ° ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° IDE ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ, ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΡΠΈΠΏΠ°, Π²ΡΡΠΊΠ° ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΠΌΠΈΠ½ΡΡΠΈ.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠ° Π²Π΅ΡΠ΅ Π΅ Π΄Π°Π΄Π΅Π½ΠΎΡΡ Π² Dropbox, Π²ΡΡΠ²Π°ΠΌ, ΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠΌΠ΅ Π² ΡΠ°Π½Π½ΠΈΡΠ΅ Π΄Π½ΠΈ Π½Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° Python. ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠ° ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Ρ.
ΠΠΊΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠ° Π²ΡΠ² Π²Π°ΡΠΈΡ ΠΌΠ°ΡΠ°Π±Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° Python, ΡΠΎΠ³Π°Π²Π° Π·Π½Π°ΠΉΡΠ΅, ΡΠ΅ ΡΠ΅Π³Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΡΠ΅ ΠΊΡΠΌ ΡΡΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΈΡΠ°Π½Π΅. ΠΠΎΠ²ΠΎΡΠΈΠ» ΡΡΠΌ Ρ ΡΠ°ΠΊΠΈΠ²Π°, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡΠ΅Ρ ΠΎΠ΄. ΠΠΈΠΊΠΎΠΉ ΠΎΡ ΡΡΡ Π½Π΅ ΡΡΠΆΠ°Π»ΡΠ²Π°ΡΠ΅. ΠΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠ° ΠΏΡΠ°Π²ΠΈ Python Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΎΡ βΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Pythonβ.
Π£Π²Π°ΠΆΠ°Π΅ΠΌΠΈ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠ° Π²ΡΠ² Π²Π°ΡΠΈΡΠ΅ Python ΠΏΡΠΎΠ΅ΠΊΡΠΈ?
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com