ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Python
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ β ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ². Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΈΠ· ΡΠ΅Π±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΒ PythonΒ 3.6 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΠ°ΠΊΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ, ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²Β PEP 526. Π‘ΡΡΡ ΡΡΠΎΠ³ΠΎ PEP Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π²Β ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΈΠ΄Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ² (PEP 484) Π½Π°Β Π΅ΡΒ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠΏΠ΅Π½Ρ, Ρ.Π΅. ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ Π²ΠΎΒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅Β Π΄Π΅Π»Π°Π΅Ρ Python ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ. ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΡ ΡΠ°Π²Π½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΠΊΠ°Π·Π°Π½ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Π΅ΠΌ Π½Π΅Β ΠΌΠ΅Π½Π΅Π΅ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Python ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ΅ Π²ΡΠΎΠ΄Π΅ pylint ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠΈΡ Π²Π°ΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π»Π΅Π΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π°Β ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
ΠΒ Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»Π΅ annotate.py ΠΌΡΒ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ name ΠΈΒ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, Π³ΠΎΠ²ΠΎΡΡΡΡΡ ΠΎΒ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΡΡΠΎΠΊΠ°. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΠΏΠΎΡΡΠ°Π²ΠΈΠ² Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΒ Π·Π°ΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π² Π½ΡΠΆΠ½ΡΠΉ ΡΠΈΠΏ. ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²ΠΎΠ²ΡΠ΅ Π½Π΅Β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ:
ΠΡΠΈΠΌ.ΠΏΠ΅ΡΠ΅Π². Π£ΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ Π² Python 3.5 ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΒ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π²Β Π°ΡΡΠΈΠ±ΡΡ __annotations__ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ annotate ΠΈΒ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊΒ ΡΡΠΎΠΌΡ Π°ΡΡΠΈΠ±ΡΡΡ:
ΠΠ°ΠΊ Π²ΡΒ Π²ΠΈΠ΄ΠΈΡΠ΅, Π°ΡΡΠΈΠ±ΡΡ __annotations__ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΒ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ Π²Β ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π²Β Π½Π°Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΒ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ Π°ΡΡΠΈΠ±ΡΡ __annotations__:
ΠΒ ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡΒ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΒ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΠΈΒ ΠΊΠ»Π°ΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΒ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΒ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π°Β Π°ΡΡΠΈΠ±ΡΡ __annotations__:
ΠΒ ΡΡΠΎΡ ΡΠ°Π· Π²Β ΡΠ»ΠΎΠ²Π°ΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°ΠΊ Π²ΡΒ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π²Β Π½ΡΠΌ Π½Π΅Ρ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ°. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΒ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ, ΠΌΡΒ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊΒ ΠΊΠ»Π°ΡΡΡ Car Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΈΒ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΒ Π·Π½Π°Π΅ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Python, ΠΊΠ°ΠΊ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ, ΠΏΡΠΈΠ²ΡΠΊΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΒ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ.