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

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡΠΌΠ΅ Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° част ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π·Π° ΠΏΡŠΡ‚Ρ, ΠΊΠΎΠΉΡ‚ΠΎ компанията Dropbox ΠΈΠ·ΠΌΠΈΠ½Π°, внСдрявайки систСма Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Python ΠΊΠΎΠ΄.

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

β†’ ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ части: ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΈ Π²Ρ‚ΠΎΡ€Π°

ΠŸΠΎΡΡ‚ΠΈΠ³Π°Π½Π΅ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° типизирания ΠΊΠΎΠ΄

ΠžΡ‰Π΅ Π΅Π΄Π½Π° Π²Π°ΠΆΠ½Π° Π·Π°Π΄Π°Ρ‡Π° (Ρ‚ΠΎΠ²Π° бСшС вторият ΠΏΠΎ популярност ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΡŠΠ»Π½ΡƒΠ²Π°ΡˆΠ΅ участващитС Π² Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ проучвания) бСшС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° ΠΊΠΎΠ΄Π° Π² Dropbox, ΠΏΠΎΠΊΡ€ΠΈΡ‚ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. Π˜Π·ΠΏΡ€ΠΎΠ±Π²Π°Ρ…ΠΌΠ΅ няколко ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ β€” ΠΎΡ‚ СстСствСното ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° типизирания ΠΊΠΎΠ΄ Π΄ΠΎ фокусиранСто Π½Π° усилията Π½Π° Ρ‡Π»Π΅Π½ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π΅ΠΊΠΈΠΏΠ° mypy Π²ΡŠΡ€Ρ…Ρƒ статичния ΠΈ динамичния Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ ΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…Π° Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Π΅ няма проста ΠΏΠ΅Ρ‡Π΅Π»ΠΈΠ²ΡˆΠ° стратСгия, Π½ΠΎ успяхмС Π΄Π° постигнСм Π±ΡŠΡ€Π· растСТ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° анотирания ΠΊΠΎΠ΄, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉΠΊΠΈ мноТСство ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ.

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π² Π½Π°ΡˆΠ΅Ρ‚ΠΎ Π½Π°ΠΉ-голямо Python Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (с Π±Π΅ΠΊΠ΅Π½Π΄ ΠΊΠΎΠ΄) броят Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄ достигна ΠΏΠΎΡ‡Ρ‚ΠΈ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°. Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ статичната типизация Π½Π° ΠΊΠΎΠ΄Π° бСшС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° Π·Π° ΠΎΠΊΠΎΠ»ΠΎ Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Mypy сСга ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈ Π·Π° ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° с Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ улСсняват Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π½Π°ΠΏΡ€Π΅Π΄ΡŠΠΊΠ° Π² типизацията. Π’ частност, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈ ΠΏΠΎ ΠΊΠΎΠ΄ с нСопрСдСлСности Π² Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ явното ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏ Any Π² Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈ, ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π° външни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ няма Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π·Π° подобряванС точността Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² Dropbox, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ принос Π·Π° подобряванС Π½Π° опрСдСлСнията Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ (Ρ‚.Π½Π°Ρ€. stub Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅) Π·Π° някои популярни опСнсорс Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Python Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ typeshed.

Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ (ΠΈ стандартизирахмС Π² послСдващитС PEP) Π½ΠΎΠ²ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° систСмата Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ позволяват ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π·Π° някои спСцифични Python ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π—Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ²Π° Π΅ TypeDict, ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π·Π° JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ с фиксиран Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ стрингови ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ° стойност ΠΎΡ‚ собствСн Ρ‚ΠΈΠΏ. Π©Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΠΌ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π°ΠΌΠ΅ систСмата Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅. ВСроятно слСдващата Π½ΠΈ ΡΡ‚ΡŠΠΏΠΊΠ° Ρ‰Π΅ бъдС подобряванСто Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° Python Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с числа.

ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄. Част 3
Π‘Ρ€ΠΎΠΉ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π½Π° анотирания ΠΊΠΎΠ΄: ΡΡŠΡ€Π²ΡŠΡ€

ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄. Част 3
Π‘Ρ€ΠΎΠΉ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π½Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄: ΠΊΠ»ΠΈΠ΅Π½Ρ‚

ΠŸΡŠΡ‚ΡΡ‚ към ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° Python ΠΊΠΎΠ΄. Част 3
ΠžΠ±Ρ‰ΠΎ Π±Ρ€ΠΎΠΉ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π½Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄

Π•Ρ‚ΠΎ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° основнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° дСйствията, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅Ρ…ΠΌΠ΅, Π·Π° Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π°Π½ΠΎΡ‚ΠΈΡ€Π°Π½ ΠΊΠΎΠ΄ Π² 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 ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° всички Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΈΠ΄ΠΈΠΎΠΌΠΈ, причиняващи Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅Π·ΠΈ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈ. Наскоро ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ голям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° redesign Π½Π° систСмата, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° mypy, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈ. Π’Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π»ΠΈΠ·Π°Ρ‚ ΠΎΡ‚ доста Ρ€Π°Π½Π½ΠΈ Π΄Π½ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΡ‰Π΅ ΠΎΡ‚ Alore, учСбния Π΅Π·ΠΈΠΊ, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ бСшС насочСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ mypy. Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Alore позволява лСсно Π΄Π° сС Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅. Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡΡ‚ mypy наслСди някои ограничСния ΠΎΡ‚ своята Ρ€Π°Π½Π½Π° проста рСализация (която пасвашС ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π½Π° Alore). Python затруднява Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈ основно ΠΏΠΎΡ€Π°Π΄ΠΈ многозначността Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅. НапримСр, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° опСрацията Π·Π° присвояванС стойността ΠΌΠΎΠΆΠ΅ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΎΡ‚ псСвдоним Π½Π° Ρ‚ΠΈΠΏΠ°. Mypy Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Π΅ Ρ‚Π°ΠΊΠΈΠ²Π° Π½Π΅Ρ‰Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ голяма част ΠΎΡ‚ Ρ†ΠΈΠΊΡŠΠ»Π° Π½Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ бъдС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π°. Π’ Alore нямашС Ρ‚Π°ΠΊΠΈΠ²Π° многозначности. ΠΠ΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π²Π·Π΅Ρ‚ΠΈ Π² Ρ€Π°Π½Π½ΠΈΡ‚Π΅ Π΅Ρ‚Π°ΠΏΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° систСмата, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° донСсат нСприятна ΠΈΠ·Π½Π΅Π½Π°Π΄Π° Π½Π° програмиста слСд ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ.

РСзюмС: ΠΏΡŠΡ‚ΡΡ‚ към 5 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π° ΠΊΠΎΠ΄ ΠΈ Π½ΠΎΠ²ΠΈ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚ΠΈ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ mypy ΠΏΡ€Π΅ΠΌΠΈΠ½Π° дълъг ΠΏΡŠΡ‚ - ΠΎΡ‚ Ρ€Π°Π½Π½ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈ Π΄ΠΎ систСма, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° която сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π½Π° продукционния ΠΊΠΎΠ΄ с ΠΎΠ±Π΅ΠΌ ΠΎΡ‚ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Ρ€Π΅Π΄Π°. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ mypy бСшС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° стандартизация Π½Π° подсказкитС Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² Python. ДнСс ΠΎΠΊΠΎΠ»ΠΎ типизацията Π½Π° Python-ΠΊΠΎΠ΄ сС Π΅ Ρ€Π°Π·Π²ΠΈΠ»Π° ΠΌΠΎΡ‰Π½Π° СкосистСма. Π’ нСя ΠΈΠΌΠ° мСсто Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π·Π° ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ срСдства Π·Π° IDE ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈ, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° няколко систСми Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅, всяка ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π²Π° свои плюсовС ΠΈ минуси.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π²Π΅Ρ‡Π΅ сС Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π² Dropbox ΠΊΠ°Ρ‚ΠΎ Π½Π΅Ρ‰ΠΎ съвсСм Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ, съм сигурСн, Ρ‡Π΅ всС ΠΎΡ‰Π΅ ΠΆΠΈΠ²Π΅Π΅ΠΌ Π² Π·ΠΎΡ€Π°Ρ‚Π° Π½Π° типизацията Π½Π° Python-ΠΊΠΎΠ΄. Мисля, Ρ‡Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Ρ‚ Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ ΠΈ ΡƒΡΡŠΠ²ΡŠΡ€ΡˆΠ΅Π½ΡΡ‚Π²Π°Ρ‚.

Ако всС ΠΎΡ‰Π΅ Π½Π΅ стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π² голям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Python, Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Π΅ сСга Π΅ ΠΌΠ½ΠΎΠ³ΠΎ подходящо Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π° към статична типизация. Разговарях с Ρ…ΠΎΡ€Π°, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€Π΅Ρ…ΠΎΠ΄. Никой ΠΎΡ‚ тях Π½Π΅ съТалява Π·Π° Ρ‚ΠΎΠ²Π°. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŠΡ‚ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈ Python Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-подходящ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π² сравнСниС с "обикновСния Python".

Π£Π²Π°ΠΆΠ°Π΅ΠΌΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π² своитС Python ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ?

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster