ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π·Π° ΠΏΡΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄Π²Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Dropbox, Π²Π½Π΅Π΄ΡΡΠ²Π°ΠΉΠΊΠΈ ΠΏΡΠΈ ΡΠ΅Π±Π΅ ΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Python ΠΊΠΎΠ΄.
β ΠΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΡΠ°ΡΡΠΈ: ΠΈ
ΠΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ ΠΊΠΎΠ΄
ΠΡΠ΅ Π΅Π΄Π½Π° Π²Π°ΠΆΠ½Π° Π·Π°Π΄Π°ΡΠ° (ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ Π²ΡΠΎΡΠ°ΡΠ° ΠΏΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π²ΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π² Π²ΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ Π°Π½ΠΊΠ΅ΡΠΈ) Π±Π΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΊΠΎΠ΄Π° Π² Dropbox, ΠΏΠΎΠΊΡΠΈΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅. ΠΠ·ΠΏΡΠΎΠ±Π²Π°Ρ ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ Π·Π°Π΄Π°ΡΠ° β ΠΎΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎΡΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ Π΄ΠΎ ΡΠΎΠΊΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΈΠ»ΠΈΡΡΠ° Π½Π° Π΅ΠΊΠΈΠΏΠ° mypy Π²ΡΡΡ Ρ ΡΡΠ°ΡΠΈΡΠ½ΠΎ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΠ΅ Π½ΡΠΌΠ° ΠΏΡΠΎΡΡΠ°ΡΠ° ΠΏΠ΅ΡΠ΅Π»ΠΈΠ²ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, Π½ΠΎ ΡΡΠΏΡΡ ΠΌΠ΅ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ Π±ΡΡΠ· ΡΠ°ΡΡΠ΅ΠΆ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π°Π½ΠΎΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΉΠΊΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° Π² Π½Π°ΡΠΈΡ Π½Π°ΠΉ-Π³ΠΎΠ»ΡΠΌ Python ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Ρ Π±Π΅ΠΊΠ΅Π½Π΄ ΠΊΠΎΠ΄) Π±ΡΠΎΡΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Ρ Π°Π½ΠΎΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄ Π΄ΠΎΡΡΠΈΠ³Π½Π° ΠΏΠΎΡΡΠΈ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°. Π Π°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΡΡΠ°ΡΠΈΡΠ½Π°ΡΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠ΄Π° Π±Π΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° Π·Π° ΠΎΠΊΠΎΠ»ΠΎ ΡΡΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Mypy ΡΠ΅Π³Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΎΡΡΠ΅ΡΠΈ Π·Π° ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° Ρ ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π°Ρ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΎΡΡΠ΅ΡΠΈ ΠΏΠΎ ΠΊΠΎΠ΄Π° Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎΡΡΠΈ Π² ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ²Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠ° Any Π² Π°Π½ΠΎΡΠ°ΡΠΈΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ, ΠΈΠ»ΠΈ Ρ ΡΠ°ΠΊΠΈΠ²Π° ΠΊΠ°ΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π° Π²ΡΠ½ΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅. Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π² Dropbox, Π½Π°ΠΏΡΠ°Π²ΠΈΡ
ΠΌΠ΅ ΠΏΡΠΈΠ½ΠΎΡ Π² ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ (ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ stub-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) Π·Π° Π½ΡΠΊΠΎΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΎΠΏΠ΅Π½ΡΠΎΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ Python ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ .
ΠΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ
ΠΌΠ΅ (ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Ρ
ΠΌΠ΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ PEP) Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎ-ΡΠΎΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° Π½ΡΠΊΠΎΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Python ΡΠ°Π±Π»ΠΎΠ½ΠΈ. ΠΠ°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΎΠ²Π° Π΅ TypeDict, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ΅ΡΠ½ΠΈΡΠΈ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Π½ΠΈΠ·ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠΈΠΏ. ΠΠΈΠ΅ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Π΄Π° ΡΠ°Π·ΡΠΈΡΡΠ²Π°ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π½ΠΈ ΡΡΡΠΏΠΊΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Python Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΈΡΠ»Π°.

ΠΡΠΎΠΉ ΡΠ΅Π΄ΠΎΠ²Π΅ Ρ Π°Π½ΠΎΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄: ΡΡΡΠ²ΡΡ

ΠΡΠΎΠΉ ΡΠ΅Π΄ΠΎΠ²Π΅ Π½Π° Π°Π½ΠΎΡΠΈΡΠ°Π½ ΠΊΠΎΠ΄: ΠΊΠ»ΠΈΠ΅Π½Ρ

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