ΠŸΡŠΡ‚ΡΡ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python. Част 2

ДнСс ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° част ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Dropbox ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Ρ‚ΠΈΠΏΠ° Π·Π° няколко ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python.

ΠŸΡŠΡ‚ΡΡ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python. Част 2

β†’ ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΡŠΡ€Π²Π° част

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»Π΅Π½ Ρ‚ΠΈΠΏ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° (PEP 484)

ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ си сСриозни СкспСримСнти с mypy Π² Dropbox ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Hack Week 2014. Hack Week Π΅ СдносСдмично ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΎΡ‚ Dropbox. ΠŸΡ€Π΅Π· Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ слуТитСлитС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° работят ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ си поискат! Някои ΠΎΡ‚ Π½Π°ΠΉ-извСстнитС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Dropbox Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…Π° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅Π·ΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ·ΠΈ СкспСримСнт Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ mypy ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΎΠ±Π΅Ρ‰Π°Π²Π°Ρ‰ΠΎ, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ Π³ΠΎΡ‚ΠΎΠ² Π·Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.

По Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ идСята Π·Π° стандартизиранС Π½Π° систСмитС Π·Π° подсказванС ΠΎΡ‚ Ρ‚ΠΈΠΏ Python Π²ΠΈΡ‚Π°Π΅ΡˆΠ΅ във Π²ΡŠΠ·Π΄ΡƒΡ…Π°. ΠšΠ°ΠΊΡ‚ΠΎ ΠΊΠ°Π·Π°Ρ…, ΠΎΡ‚ Python 3.0 бСшС възмоТно Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Ρ‚ΠΎΠ²Π° бяха само ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ, Π±Π΅Π· Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ синтаксис ΠΈ сСмантика. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Ρ‚Π΅Π·ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π² ΠΏΠΎ-голямата си част просто бяха ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Π½ΠΈ. Π‘Π»Π΅Π΄ Hack Week Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΠΎ стандартизиранС Π½Π° сСмантиката. Π’Π°Π·ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ появата PEP 484 (Guido van Rossum, Łukasz Langa ΠΈ Π°Π· си ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡ΠΈΡ…ΠΌΠ΅ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚).

ΠœΠΎΡ‚ΠΈΠ²ΠΈΡ‚Π΅ Π½ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΎΡ‚ Π΄Π²Π΅ страни. ΠŸΡŠΡ€Π²ΠΎ, надявахмС сС, Ρ‡Π΅ цялата СкосистСма Π½Π° Python ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΎΠ±Ρ‰ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ към ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΠ²Π΅Ρ‚ΠΈ Π·Π° Ρ‚ΠΈΠΏ (Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² Python ΠΊΠ°Ρ‚ΠΎ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ Π½Π° β€žΠ°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π·Π° Ρ‚ΠΈΠΏβ€œ). Π’ΠΎΠ²Π°, ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ рисковС, Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π½Π΅ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ. Π’Ρ‚ΠΎΡ€ΠΎ, искахмС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΎ Π΄Π° обсъдим ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ с ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° общността Π½Π° Python. Π’ΠΎΠ²Π° ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ отчасти бСшС ΠΏΡ€ΠΎΠ΄ΠΈΠΊΡ‚ΡƒΠ²Π°Π½ΠΎ ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π½Π΅ Π±ΠΈΡ…ΠΌΠ΅ искали Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ β€žΠΎΡ‚ΡΡ‚ΡŠΠΏΠ½ΠΈΡ†ΠΈβ€œ ΠΎΡ‚ основнитС ΠΈΠ΄Π΅ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π² ΠΎΡ‡ΠΈΡ‚Π΅ Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΈΡ‚Π΅ маси програмисти Π½Π° Python. Π’ΠΎΠ²Π° Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ въвСдСн Π΅Π·ΠΈΠΊ, извСстСн ΠΊΠ°Ρ‚ΠΎ "ΠΏΠ°Ρ‚Π΅ΡˆΠΊΠΎ писанС". Π’ общността Π² самото Π½Π°Ρ‡Π°Π»ΠΎ Π½Π΅ моТСшС Π΄Π° Π½Π΅ възникнС донякъдС ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ към идСята Π·Π° статично писанС. Но Ρ‚ΠΎΠ²Π° настроСниС Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΈΠ·Ρ‡Π΅Π·Π½Π°, слСд ΠΊΠ°Ρ‚ΠΎ стана ясно, Ρ‡Π΅ статичното въвСТданС няма Π΄Π° бъдС Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ (ΠΈ слСд ΠΊΠ°Ρ‚ΠΎ Ρ…ΠΎΡ€Π°Ρ‚Π° Ρ€Π°Π·Π±Ρ€Π°Ρ…Π°, Ρ‡Π΅ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ).

Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Π½Π°ΠΌΠ΅ΠΊ Π·Π° Ρ‚ΠΈΠΏ, ΠΊΠΎΠΉΡ‚ΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка бСшС ΠΏΡ€ΠΈΠ΅Ρ‚, бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ mypy ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ ΠΏΠΎ Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅. PEP 484 бСшС пуснат с Python 3.5 ΠΏΡ€Π΅Π· 2015 Π³. Python Π²Π΅Ρ‡Π΅ Π½Π΅ бСшС Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ въвСдСн Π΅Π·ΠΈΠΊ. ΠžΠ±ΠΈΡ‡Π°ΠΌ Π΄Π° мисля Π·Π° Ρ‚ΠΎΠ²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ Π·Π° Π²Π°ΠΆΠ΅Π½ ΠΊΡ€Π°ΠΉΡŠΠ³ΡŠΠ»Π΅Π½ камък Π² историята Π½Π° Python.

Начало Π½Π° миграцията

Π’ края Π½Π° 2015 Π³. Dropbox създадС Π΅ΠΊΠΈΠΏ ΠΎΡ‚ Ρ‚Ρ€ΠΈΠΌΠ° Π΄ΡƒΡˆΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° работят Π²ΡŠΡ€Ρ…Ρƒ mypy. Π’Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π“ΡƒΠΈΠ΄ΠΎ Π²Π°Π½ Росъм, Π“Ρ€Π΅Π³ ΠŸΡ€Π°ΠΉΡ ΠΈ Π”Π΅ΠΉΠ²ΠΈΠ΄ Π€ΠΈΡˆΡŠΡ€. ΠžΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ ситуацията Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π±ΡŠΡ€Π·ΠΎ. ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΠΏΡ€Π΅Ρ‡ΠΊΠ° ΠΏΡ€Π΅Π΄ растСТа Π½Π° mypy бСшС производитСлността. ΠšΠ°ΠΊΡ‚ΠΎ Π½Π°ΠΌΠ΅ΠΊΠ½Π°Ρ… ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π² Ρ€Π°Π½Π½ΠΈΡ‚Π΅ Π΄Π½ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° мислСх Π΄Π° ΠΏΡ€Π΅Π²Π΅Π΄Π° имплСмСнтацията Π½Π° mypy Π² C, Π½ΠΎ Ρ‚Π°Π·ΠΈ идСя засСга бСшС Π·Π°Ρ‡Π΅Ρ€ΠΊΠ½Π°Ρ‚Π° ΠΎΡ‚ списъка. ΠžΡΡ‚Π°Π½Π°Ρ…ΠΌΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ със систСмата с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° CPython, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π±ΡŠΡ€Π· Π·Π° инструмСнти ΠΊΠ°Ρ‚ΠΎ mypy. (ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ PyPy, Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π° рСализация Π½Π° Python с JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€, ΡΡŠΡ‰ΠΎ Π½Π΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°.)

Π—Π° щастиС Ρ‚ΡƒΠΊ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ Π½ΠΈ Π΄ΠΎΠΉΠ΄ΠΎΡ…Π° някои подобрСния Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΡ‚Π΅. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΠΌΠΎΡ‰Π΅Π½ β€žΡƒΡΠΊΠΎΡ€ΠΈΡ‚Π΅Π»β€œ бСшС ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. Π˜Π΄Π΅ΡΡ‚Π° Π·Π°Π΄ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠ΅ бСшС проста: Π°ΠΊΠΎ всички зависимости Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° Π½Π΅ са сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ изпълнСниС Π½Π° mypy, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ изпълнСниС, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ със зависимости. Π’Ρ€ΡΠ±Π²Π°ΡˆΠ΅ само Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ зависят ΠΎΡ‚ тях. Mypy Π΄ΠΎΡ€ΠΈ ΠΎΡ‚ΠΈΠ΄Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡: Π°ΠΊΠΎ Π²ΡŠΠ½ΡˆΠ½ΠΈΡΡ‚ интСрфСйс Π½Π° Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ» Π½Π΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, mypy ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈ, Ρ‡Π΅ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Ρ‚ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡƒΠ», Π½Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ провСрявани ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈ Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ количСства ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ ΠΊΠΎΠ΄. Π’ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ процСс ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ изпълнСния Π½Π° mypy, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ постСпСнно сС добавят към ΠΊΠΎΠ΄Π° ΠΈ постСпСнно сС подобряват. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ изпълнСниС Π½Π° mypy всС ΠΎΡ‰Π΅ бСшС ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π²Π½ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ имашС ΠΌΠ½ΠΎΠ³ΠΎ зависимости Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠΌ ситуацията, Π²Π½Π΅Π΄Ρ€ΠΈΡ…ΠΌΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° дистанционно ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅. Ако mypy ΠΎΡ‚ΠΊΡ€ΠΈΠ΅, Ρ‡Π΅ локалният кСш вСроятно Π΅ остарял, Ρ‚ΠΎΠΉ изтСгля Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½Π° снимка Π½Π° кСша Π·Π° цялата ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° ΠΎΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎΠ΅Ρ‚Π°ΠΏΠ½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚Π°Π·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½Π° снимка. Π’ΠΎΠ²Π° Π½ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΎΡ‰Π΅ Π΅Π΄Π½Π° голяма ΠΊΡ€Π°Ρ‡ΠΊΠ° към ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° производитСлността Π½Π° mypy.

Π’ΠΎΠ²Π° бСшС ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° Π±ΡŠΡ€Π·ΠΎ ΠΈ СстСствСно ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠ° Π² Dropbox. Π”ΠΎ края Π½Π° 2016 Π³. Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 420000 XNUMX Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python с Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. Много ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ бяха Снтусиазирани относно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠ°. ВсС ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΅ΠΊΠΈΠΏΠΈ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…Π° Dropbox mypy.

Π’ΠΎΠ³Π°Π²Π° всичко изглСТдашС Π΄ΠΎΠ±Ρ€Π΅, Π½ΠΎ ΠΈΠΌΠ°Ρ…ΠΌΠ΅ ΠΎΡ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°. Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΈ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ проучвания Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, Π·Π° Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΈΡ‚Π΅ области Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΏΡŠΡ€Π²ΠΎ (Ρ‚Π°Π·ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° всС ΠΎΡ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² компанията днСс). Най-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΡ‚ΠΎ стана ясно, бяха Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΡŠΡ€Π²ΠΎ, ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΎ ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π°, Π²Ρ‚ΠΎΡ€ΠΎ, ΠΈΠΌΠ°Ρ…ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ mypy, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ. Π‘Π΅ΡˆΠ΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ясно, Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½ΠΈ Π·Π° ускоряванС Π½Π° mypy ΠΈ внСдряванСто ΠΌΡƒ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ всС ΠΎΡ‰Π΅ Π΅ Π΄Π°Π»Π΅Ρ‡ ΠΎΡ‚ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅. НиС, съзнавайки ваТността Π½Π° Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, сС Π·Π°Π΅Ρ…ΠΌΠ΅ с тяхното Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅.

ΠŸΠΎΠ²Π΅Ρ‡Π΅ производитСлност!

ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…Π° mypy ΠΏΠΎ-Π±ΡŠΡ€Π·, Π½ΠΎ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΡŠΡ‚ всС ΠΎΡ‰Π΅ Π½Π΅ бСшС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π±ΡŠΡ€Π·. Много постСпСнни ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ…Π° ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Π°. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° Ρ‚ΠΎΠ²Π° Π΅ цикличният внос. Π’ΠΎΠ²Π° вСроятно няма Π΄Π° ΠΈΠ·Π½Π΅Π½Π°Π΄Π° Π½ΠΈΠΊΠΎΠΉ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΠ» с Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π±Π°Π·ΠΈ, написани Π½Π° Python. Π˜ΠΌΠ°Ρ…ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΠΈ ΠΎΡ‚ стотици ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π° всички останали. Ако някой Ρ„Π°ΠΉΠ» Π² Ρ†ΠΈΠΊΡŠΠ» Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ бСшС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½, mypy Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ всички Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ‚ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ» ΠΈ чСсто всички ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ». Π•Π΄ΠΈΠ½ Ρ‚Π°ΠΊΡŠΠ² Ρ†ΠΈΠΊΡŠΠ» бСшС прословутата β€žΠ·Π°ΠΏΠ»Π΅Ρ‚Π΅Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚β€œ, която ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² Dropbox. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ структура ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°ΡˆΠ΅ няколкостотин ΠΌΠΎΠ΄ΡƒΠ»Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ бСшС ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π°, пряко ΠΈΠ»ΠΈ косвСно, ΠΌΠ½ΠΎΠ³ΠΎ тСстовС, тя ΡΡŠΡ‰ΠΎ бСшС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² производствСн ΠΊΠΎΠ΄.

ΠžΠ±ΠΌΠΈΡΠ»ΡΡ…ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° β€žΡ€Π°Π·ΠΏΠ»ΠΈΡ‚Π°Π½Π΅β€œ Π½Π° ΠΊΡ€ΡŠΠ³ΠΎΠ²ΠΈ зависимости, Π½ΠΎ нямахмС рСсурситС Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ. ИмашС Ρ‚Π²ΡŠΡ€Π΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄, с ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ бяхмС Π·Π°ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° стигнахмС Π΄ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° Π½Π°ΠΊΠ°Ρ€Π°ΠΌΠ΅ mypy Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±ΡŠΡ€Π·ΠΎ Π΄ΠΎΡ€ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° β€žΠ·Π°ΠΏΠ»Π΅Ρ‚Π΅Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈβ€œ. ΠŸΠΎΡΡ‚ΠΈΠ³Π½Π°Ρ…ΠΌΠ΅ Ρ‚Π°Π·ΠΈ Ρ†Π΅Π» с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π΄Π΅ΠΌΠΎΠ½Π° mypy. Π”Π΅ΠΌΠΎΠ½ΡŠΡ‚ Π΅ ΡΡŠΡ€Π²ΡŠΡ€Π΅Π½ процСс, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° Π΄Π²Π΅ интСрСсни Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡŠΡ€Π²ΠΎ, Ρ‚ΠΎΠΉ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° информация Π·Π° цялата ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стартиратС mypy, Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с хиляди ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½ΠΈ зависимости. На Π²Ρ‚ΠΎΡ€ΠΎ място, Ρ‚ΠΎΠΉ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ, Π½Π° Π½ΠΈΠ²ΠΎ ΠΌΠ°Π»ΠΊΠΈ структурни Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° зависимоститС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ. НапримСр, Π°ΠΊΠΎ функцията foo ΠΈΠ·Π²ΠΈΠΊΠ²Π° функция bar, Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° зависимост foo ΠΎΡ‚ bar. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½ Ρ„Π°ΠΉΠ» сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ ΠΏΡŠΡ€Π²ΠΎ, ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° само промСнСния Ρ„Π°ΠΉΠ». Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΎΡ‚Π²ΡŠΠ½ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ», ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ сигнатури. Π”Π΅ΠΌΠΎΠ½ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ само Π·Π° Π΄Π²ΠΎΠΉΠ½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΠ½Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ дСйствитСлно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π°Ρ‚Π° функция. ОбикновСно ΠΏΡ€ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ трябва Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° всичко Ρ‚ΠΎΠ²Π° Π½Π΅ бСшС лСсно, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° рСализация Π½Π° mypy бСшС силно фокусирана Π²ΡŠΡ€Ρ…Ρƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» навСднъТ. Π’Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС справим с ΠΌΠ½ΠΎΠ³ΠΎ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΈ ситуации, Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ изисквашС ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² случаитС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅Ρ‰ΠΎ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°. НапримСр, Ρ‚ΠΎΠ²Π° сС случва, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π° Π΄Π°Π΄Π΅Π½ клас Π΅ присвоСн Π½ΠΎΠ² Π±Π°Π·ΠΎΠ² клас. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ искахмС, успяхмС Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ само Π΄ΠΎ няколко сСкунди. Π’ΠΎΠ²Π° Π½ΠΈ сС стори голяма ΠΏΠΎΠ±Π΅Π΄Π°.

ΠžΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ производитСлност!

Π—Π°Π΅Π΄Π½ΠΎ с ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎΡ‚ΠΎ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±ΡΡŠΠ΄ΠΈΡ… ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ mypy ΠΏΠΎΡ‡Ρ‚ΠΈ напълно Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ програмист чСсто изпълнява ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ°, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² малък Π±Ρ€ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, производитСлността Π½Π° систСмата Π² Π½Π°ΠΉ-нСблагоприятния случай Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° всС ΠΎΡ‰Π΅ бСшС Π΄Π°Π»Π΅Ρ‡ ΠΎΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π°. Чистото стартиранС Π½Π° mypy ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ΅ Π½Π°Π΄ 15 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ. И Ρ‚ΠΎΠ²Π° бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π±ΠΈΡ…ΠΌΠ΅ Π±ΠΈΠ»ΠΈ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ. Всяка сСдмица ситуацията сС влошавашС, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ програмиститС ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ…Π° Π΄Π° ΠΏΠΈΡˆΠ°Ρ‚ Π½ΠΎΠ² ΠΊΠΎΠ΄ ΠΈ Π΄Π° добавят Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ към ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ ΠΊΠΎΠ΄. ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ всС ΠΎΡ‰Π΅ бяха Π³Π»Π°Π΄Π½ΠΈ Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ производитСлност, Π½ΠΎ Π½ΠΈΠ΅ сС Ρ€Π°Π΄Π²Π°Ρ…ΠΌΠ΅ Π΄Π° Π³ΠΈ посрСщнСм Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°.

Π Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към Π΅Π΄Π½Π° ΠΎΡ‚ ΠΏΠΎ-Ρ€Π°Π½Π½ΠΈΡ‚Π΅ ΠΈΠ΄Π΅ΠΈ относно mypy. А ΠΈΠΌΠ΅Π½Π½ΠΎ, Π΄Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Python ΠΊΠΎΠ΄ Π² C ΠΊΠΎΠ΄. ЕкспСримСнтиранСто с Cython (систСма, която Π²ΠΈ позволява Π΄Π° ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΠΊΠΎΠ΄, написан Π½Π° Python, Π² C ΠΊΠΎΠ΄) Π½Π΅ Π½ΠΈ Π΄Π°Π΄Π΅ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎ ускоряванС, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° съТивим идСята Π΄Π° напишСм наш собствСн ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€. Въй ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π½Π° mypy (написана Π½Π° Python) Π²Π΅Ρ‡Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ Ρ‰Π΅ си струва Π΄Π° ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π·Π° Π΄Π° ускорим систСмата. Π‘ΡŠΡ€Π·ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, Π·Π° Π΄Π° тСствам Ρ‚Π°Π·ΠΈ идСя. Π’ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 10-ΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° производитСлността ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΌΠΈΠΊΡ€ΠΎ-Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅. ΠΠ°ΡˆΠ°Ρ‚Π° идСя бСшС Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΌΠ΅ Python ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² C ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Cython ΠΈ Π΄Π° ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ΠΌ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ° Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ρ‚ΠΈΠΏΠ° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ° сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Ρ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ само ΠΎΡ‚ систСми Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ°). Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΏΠ»Π°Π½ΠΈΡ€Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΏΡ€Π΅Π²Π΅Π΄Π΅ΠΌ имплСмСнтацията mypy ΠΎΡ‚ Python Π½Π° Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Π΄Π° бъдС статично въвСдСн, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° (ΠΈ Π² ΠΏΠΎ-голямата си част Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ) Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ Python. (Π’ΠΎΠ·ΠΈ Π²ΠΈΠ΄ ΠΌΠ΅ΠΆΠ΄ΡƒΠ΅Π·ΠΈΡ‡Π½Π° миграция сС Π΅ ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π°Π»Π° Π² Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ традиция Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° mypy. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° рСализация Π½Π° mypy Π΅ написана Π½Π° Alore, слСд Ρ‚ΠΎΠ²Π° имашС синтактичСн Ρ…ΠΈΠ±Ρ€ΠΈΠ΄ Π½Π° Java ΠΈ Python).

ЀокусиранСто Π²ΡŠΡ€Ρ…Ρƒ API Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ CPython бСшС ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π° Π΄Π° Π½Π΅ сС загубят способноститС Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. НС бСшС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° внСдрявамС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ mypy сС Π½ΡƒΠΆΠ΄Π°Π΅ΡˆΠ΅. ОсвСн Ρ‚ΠΎΠ²Π° ΠΏΠ°ΠΊ Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ цялата СкосистСма Π½Π° Python ΠΈ всички инструмСнти (ΠΊΠ°Ρ‚ΠΎ pytest). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°ΡˆΠ΅, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄ Π½Π° Python ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ позволява Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π· ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ тСстванСто ΠΌΡƒ, вмСсто Π΄Π° Ρ‡Π°ΠΊΠ°ΠΌΠ΅ ΠΊΠΎΠ΄ΡŠΡ‚ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°. ИзглСТдашС, Ρ‡Π΅ сС справямС страхотно със сСдянСто Π½Π° Π΄Π²Π° стола, Ρ‚Π°ΠΊΠ° Π΄Π° сС ΠΊΠ°ΠΆΠ΅, ΠΈ Π½ΠΈ харСса.

ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ…ΠΌΠ΅ mypyc (Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° mypy ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π΅Π½ ΠΊΡ€Π°ΠΉ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅), сС ΠΎΠΊΠ°Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠšΠ°Ρ‚ΠΎ цяло постигнахмС ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 4 ΠΏΡŠΡ‚ΠΈ ускорСниС Π·Π° чСсти изпълнСния Π½Π° mypy Π±Π΅Π· ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ядрото Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° mypyc ΠΎΡ‚Π½Π΅ Π½Π° малък Π΅ΠΊΠΈΠΏ ΠΎΡ‚ Майкъл Бъливан, Иван ЛСвкивски, Π₯ю Π₯Π°Π½ ΠΈ ΠΌΠ΅Π½ ΠΎΠΊΠΎΠ»ΠΎ 4 ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΈ мСсСца. Π’ΠΎΠ²Π° количСство Ρ€Π°Π±ΠΎΡ‚Π° бСшС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° прСнаписванС Π½Π° mypy, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² C++ ΠΈΠ»ΠΈ Go. И Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π±ΠΈ трябвало Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³ΠΎ прСнаписвамС Π½Π° Π΄Ρ€ΡƒΠ³ Π΅Π·ΠΈΠΊ. ОсвСн Ρ‚ΠΎΠ²Π° сС надявахмС, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ΠΌ mypyc Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠ²Π° Π½ΠΈΠ²ΠΎ, Ρ‡Π΅ Π΄Ρ€ΡƒΠ³ΠΈ програмисти Π½Π° Dropbox Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚, Π·Π° Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ ΠΈ ускорят своя ΠΊΠΎΠ΄.

Π—Π° Π΄Π° постигнСм Ρ‚ΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π½Π° производитСлност, Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ някои интСрСсни ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ускори ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΡŠΡ€Π·ΠΈ конструкции Π½Π° ниско Π½ΠΈΠ²ΠΎ Π½Π° C. НапримСр, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функция сС ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π° Π² ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° C функция. И Ρ‚Π°ΠΊΠΎΠ²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΎΡ‚ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½Π° функция. Някои ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°Ρ‚ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π² Ρ€Π΅Ρ‡Π½ΠΈΠΊ, всС ΠΎΡ‰Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π½ΠΈ C-API извиквания ΠΎΡ‚ CPython, ΠΊΠΎΠΈΡ‚ΠΎ са само Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ са ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ. УспяхмС Π΄Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° систСмата, създадСно ΠΎΡ‚ интСрпрСтацията, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π² Ρ‚ΠΎΠ·ΠΈ случай Π΄Π°Π΄Π΅ само ΠΌΠ°Π»ΠΊΠ° ΠΏΠ΅Ρ‡Π°Π»Π±Π° ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° производитСлността.

Π—Π° Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ Π½Π°ΠΉ-чСсто срСщанитС β€žΠ±Π°Π²Π½ΠΈβ€œ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ…ΠΌΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄. Π’ΡŠΠΎΡ€ΡŠΠΆΠ΅Π½ΠΈ с Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π½ΠΈΠ΅ сС ΠΎΠΏΠΈΡ‚Π°Ρ…ΠΌΠ΅ ΠΈΠ»ΠΈ Π΄Π° настроим mypyc, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΏΠΎ-Π±ΡŠΡ€Π· C ΠΊΠΎΠ΄ Π·Π° Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈΠ»ΠΈ Π΄Π° ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅ΠΌ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° Python, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΈ понякога просто нямахмС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ просто Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ) . ΠŸΡ€Π΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Python чСсто бСшС ΠΏΠΎ-лСсно Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ ΡΡŠΡ‰Π°Ρ‚Π° трансформация. Π’ Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π΅Π½ ΠΏΠ»Π°Π½ искахмС Π΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ трансформации, Π½ΠΎ ΠΏΠΎ Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ бяхмС фокусирани Π²ΡŠΡ€Ρ…Ρƒ ускоряванСто Π½Π° mypy с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ усилия. И ΠΏΡ€ΠΈΠ΄Π²ΠΈΠΆΠ²Π°ΠΉΠΊΠΈ сС към Ρ‚Π°Π·ΠΈ Ρ†Π΅Π», Π½ΠΈΠ΅ отрязахмС няколко ъгъла.

Π—Π° Π΄Π° сС ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ ...

Π£Π²Π°ΠΆΠ°Π΅ΠΌΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Какви бяха впСчатлСнията Π²ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° mypy, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ…Ρ‚Π΅ Π·Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ?

ΠŸΡŠΡ‚ΡΡ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python. Част 2
ΠŸΡŠΡ‚ΡΡ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠ° Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ Π½Π° Python. Част 2

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€