ΠŸΠ°Ρ‚ΠΎΡ‚ Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ Python ΠΊΠΎΠ΄. Π”Π΅Π» 1

ДСнСска Π²ΠΈ Π³ΠΎ прСнСсувамС ΠΏΡ€Π²ΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡ€Π΅Π²ΠΎΠ΄ΠΎΡ‚ Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»ΠΎΡ‚ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Dropbox сС справува со ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° Python.

ΠŸΠ°Ρ‚ΠΎΡ‚ Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ Python ΠΊΠΎΠ΄. Π”Π΅Π» 1

Dropbox ΠΏΠΈΡˆΡƒΠ²Π° ΠΌΠ½ΠΎΠ³Ρƒ Π²ΠΎ Python. Π’ΠΎΠ° Π΅ јазик ΡˆΡ‚ΠΎ Π³ΠΎ користимС исклучитСлно ΡˆΠΈΡ€ΠΎΠΊΠΎ, ΠΊΠ°ΠΊΠΎ Π·Π° back-end услуги, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° дСсктоп-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ΠΌΠ½ΠΎΠ³Ρƒ користимС Go, TypeScript ΠΈ Rust, Π½ΠΎ Python Π΅ Π½Π°ΡˆΠΈΠΎΡ‚ Π³Π»Π°Π²Π΅Π½ јазик. Π‘ΠΎ ΠΎΠ³Π»Π΅Π΄ Π½Π° Π½Π°ΡˆΠ°Ρ‚Π° скала, Π° Π½ΠΈΠ΅ Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ Π·Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° ΠŸΠ°Ρ˜Ρ‚ΠΎΠ½, сС ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΎΡ‚ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚Π°ΠΊΠΎΠ² ΠΊΠΎΠ΄ Π½Π΅ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»ΠΈΡ†ΠΈΡ€Π°ΡˆΠ΅ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΏΠΎΡ‡Π½Π° сСриозно Π΄Π° влијаС Π½Π° продуктивноста Π½Π° Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‚. Π—Π° Π΄Π° Π³ΠΎ ΡƒΠ±Π»Π°ΠΆΠΈΠΌΠ΅ овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΡ‡Π½Π°Π²ΠΌΠ΅ постСпСно Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Ρ„Ρ€Π»Π°ΠΌΠ΅ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΊΠΎΠ΄ ΠΊΠΎΠ½ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° статички Ρ‚ΠΈΠΏ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ mypy. Ова Π΅ Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Π½Π°Ρ˜ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈΠΎΡ‚ самостоСн систСм Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π·Π° Python. Mypy Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Π³Π»Π°Π²Π½ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π²ΠΎ Dropbox.

Dropbox бСшС Π΅Π΄Π½Π° ΠΎΠ΄ ΠΏΡ€Π²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡˆΡ‚ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΡˆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° статички Ρ‚ΠΈΠΏ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° Python Π²ΠΎ ΠΎΠ²Π°Π° скала. Mypy сС користи Π²ΠΎ ΠΈΠ»Ρ˜Π°Π΄Π½ΠΈΡ†ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΎΠ²ΠΈΠ΅ Π΄Π΅Π½ΠΎΠ²ΠΈ. Оваа Π°Π»Π°Ρ‚ΠΊΠ° Π±Π΅Π·Π±Ρ€ΠΎΡ˜ ΠΏΠ°Ρ‚ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π²Π΅Π»Π°Ρ‚, β€žΡ‚Π΅ΡΡ‚ΠΈΡ€Π°Π½ Π²ΠΎ Π±ΠΈΡ‚ΠΊΠ°β€œ. ПоминавмС Π΄ΠΎΠ»Π³ ΠΏΠ°Ρ‚ Π·Π° Π΄Π° стигнСмС Π΄ΠΎ ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ смС сСга. На ΠΏΠ°Ρ‚ΠΎΡ‚, имашС ΠΌΠ½ΠΎΠ³Ρƒ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈ Π·Π°Ρ„Π°Ρ‚ΠΈ ΠΈ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈ СкспСримСнти. Овој пост ја ΠΎΠΏΡ„Π°ΡœΠ° ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° статички Ρ‚ΠΈΠΏ Π²ΠΎ Python, ΠΎΠ΄ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ карпСсти ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΡ†ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΠΌΠΎΡ˜ΠΎΡ‚ истраТувачки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄ΠΎ дСнСс, ΠΊΠΎΠ³Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ ΠΈ Π½Π°Π²Π΅ΡΡ‚ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ станаа Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈ Π·Π° Π±Π΅Π·Π±Ρ€ΠΎΡ˜ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ ΠΊΠΎΠΈ ΠΏΠΈΡˆΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Python. ОвиС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ сСга сС ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ ΠΎΠ΄ ΠΌΠ½ΠΎΠ³Ρƒ Π°Π»Π°Ρ‚ΠΊΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС IDE ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ.

β†’ ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ˜Ρ‚Π΅ Π³ΠΎ Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Π΄Π΅Π»

Π—ΠΎΡˆΡ‚ΠΎ Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚?

Ако нСкогаш стС користСлС Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΏΠΈΡˆΡƒΠ²Π°Π½ Python, ΠΌΠΎΠΆΠ΅Π±ΠΈ ќС ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° ΠΊΠΎΠ½Ρ„ΡƒΠ·ΠΈΡ˜Π° Π·ΠΎΡˆΡ‚ΠΎ Π²ΠΎ послСдно Π²Ρ€Π΅ΠΌΠ΅ сС ΠΊΡ€Π΅Π½Π° Ρ‚ΠΎΠ»ΠΊΠ°Π²Π° Π²Ρ€Π΅Π²Π° ΠΎΠΊΠΎΠ»Ρƒ статичкото ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΈ mypy. Или ΠΌΠΎΠΆΠ΅Π±ΠΈ Π²ΠΈ сС Π΄ΠΎΠΏΠ°Ρ“Π° Python Ρ‚ΠΎΠΊΠΌΡƒ ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅, Π° ΠΎΠ½Π° ΡˆΡ‚ΠΎ сС случува Сдноставно Π²Π΅ Π²ΠΎΠ·Π½Π΅ΠΌΠΈΡ€ΡƒΠ²Π°. ΠšΠ»ΡƒΡ‡ΠΎΡ‚ Π·Π° врСдноста Π½Π° статичкото ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΡ‚ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π°Ρ‚Π°: ΠΊΠΎΠ»ΠΊΡƒ Π΅ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‚ΠΎΠ»ΠΊΡƒ повСќС сС ΠΏΡ€ΠΈΠΊΠ»ΠΎΠ½ΡƒΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ½ статично ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅, ΠΈ Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚, Ρ‚ΠΎΠ»ΠΊΡƒ повСќС Π²ΠΈ Ρ‚Ρ€Π΅Π±Π°.

Π”Π° прСтпоставимС Π΄Π΅ΠΊΠ° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ достигнал Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° ΠΎΠ΄ дСсСтици илјади Π»ΠΈΠ½ΠΈΠΈ ΠΈ сС ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° Π½Π΅Π³ΠΎ. Π“Π»Π΅Π΄Π°Ρ˜ΡœΠΈ сличСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ€Π· основа Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ искуство, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° Ρ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ ќС Π±ΠΈΠ΄Π΅ ΠΊΠ»ΡƒΡ‡ΠΎΡ‚ Π·Π° ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ. Π‘Π΅Π· ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС ΠΎΡ‚ΠΊΡ€ΠΈΠ΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π΄Π° сС прСнСсат Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Ρ€Π°Ρ‚Π°Ρ‚. Π•Π²Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ ΠΏΡ€Π°ΡˆΠ°ΡšΠ° Π½Π° ΠΊΠΎΠΈ чСсто Π΅ Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈ Π±Π΅Π· ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ:

  • Π”Π°Π»ΠΈ ΠΎΠ²Π°Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈ None?
  • Каков Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ овој Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚? items?
  • Кој Π΅ Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΡ‚ id: int Π΄Π°Π»ΠΈ Π΅, str, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ нСкој ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ Ρ‚ΠΈΠΏ?
  • Π”Π°Π»ΠΈ овој Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ список? Π”Π°Π»ΠΈ Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΠΌΡƒ сС ΠΏΡ€Π΅Π΄Π°Π΄Π΅ Ρ‚ΠΎΡ€ΠΊΠ°?

Ако Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ слСдниов Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΎΠ΄ ΠΊΠΎΠ΄ со ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ ΠΈ сС ΠΎΠ±ΠΈΠ΄Π΅Ρ‚Π΅ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° слични ΠΏΡ€Π°ΡˆΠ°ΡšΠ°, ќС ΠΈΠ·Π»Π΅Π·Π΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Π΅ Π½Π°Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°:

class Resource:
    id: bytes
    ...
    def read_metadata(self, 
                      items: Sequence[str]) -> Dict[str, MetadataItem]:
        ...

  • read_metadata Π½Π΅ сС Π²Ρ€Π°ΡœΠ° None, бидСјќи Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° Π²Ρ€Π°ΡœΠ°ΡšΠ΅ Π½Π΅ Π΅ Optional[…].
  • АргумСнт items Π΅ Π½ΠΈΠ·Π° ΠΎΠ΄ Π»ΠΈΠ½ΠΈΠΈ. НС ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡƒΠ²Π° ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ.
  • Атрибут id Π΅ Π½ΠΈΠ·Π° ΠΎΠ΄ Π±Π°Ρ˜Ρ‚ΠΈ.

Π’ΠΎ ΠΈΠ΄Π΅Π°Π»Π΅Π½ свСт, Π±ΠΈ сС ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°Π»ΠΎ Π΄Π΅ΠΊΠ° ситС Ρ‚Π°ΠΊΠ²ΠΈ суптилности ќС Π±ΠΈΠ΄Π°Ρ‚ опишани Π²ΠΎ Π²Π³Ρ€Π°Π΄Π΅Π½Π°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° (docstring). Но, искуството Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Ρ‚Π°ΠΊΠ²Π°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° чСсто Π½Π΅ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Π½Π° Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ со кој Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅. Π”ΡƒΡ€ΠΈ ΠΈ Π°ΠΊΠΎ Ρ‚Π°ΠΊΠ²Π°Ρ‚Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π΅ присутна Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС смСта Π½Π° Π½Π΅Ρ˜Π·ΠΈΠ½Π°Ρ‚Π° апсолутна исправност. Оваа Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ нСјасна, Π½Π΅Ρ‚ΠΎΡ‡Π½Π° ΠΈ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π° Π·Π° Π½Π΅Π΄ΠΎΡ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ°. Π’ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ‚ΠΈΠΌΠΎΠ²ΠΈ ΠΈΠ»ΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, овој ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° станС исклучитСлно Π°ΠΊΡƒΡ‚Π΅Π½.

Π”ΠΎΠ΄Π΅ΠΊΠ° Python сС истакнува Π²ΠΎ Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ срСднитС Ρ„Π°Π·ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅, Π²ΠΎ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡ‚Π΅ ΠΊΠΎΠΈ користат Python ΠΌΠΎΠΆΠ΅ Π΄Π° сС соочат со Π²ΠΈΡ‚Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π°ΡˆΠ°ΡšΠ΅: β€žΠ”Π°Π»ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΡ€Π΅ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ сè Π½Π° статички ΠΎΡ‚Ρ‡ΡƒΠΊΡƒΠ²Π°Π½ јазик?β€œ.

БистСмитС Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΊΠ°ΠΊΠΎ mypy Π³ΠΎ Ρ€Π΅ΡˆΠ°Π²Π°Π°Ρ‚ Π³ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ со Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΌΡƒ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»Π΅Π½ јазик Π·Π° ΠΎΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΈ со ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΈΠΏ сС совпаѓаат со ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° (ΠΈ, ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΎ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ ΠΏΠΎΡΡ‚ΠΎΠ΅ΡšΠ΅). Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΈΠ΅ систСми Π½ΠΈ ставаат Π½Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡšΠ΅ Π½Π΅ΡˆΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°.

Π£ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° Ρ‚Π°ΠΊΠ²ΠΈ систСми ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ прСдности, ΠΈ Ρ‚ΠΈΠ΅ сС вСќС цСлосно Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΡ˜Π°Π»Π½ΠΈ:

  • БистСмот Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΌΠ°Π»ΠΈ (ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΠΊΡƒ ΠΌΠ°Π»ΠΈ) Π³Ρ€Π΅ΡˆΠΊΠΈ. Π’ΠΈΠΏΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ ΠΊΠΎΠ³Π° Π·Π°Π±ΠΎΡ€Π°Π²Π°Π°Ρ‚ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ врСдност None ΠΈΠ»ΠΈ нСкоја Π΄Ρ€ΡƒΠ³Π° посСбна ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°.
  • Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ поСдноставСно бидСјќи систСмот Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ чСстопати Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Ρ‚ΠΎΡ‡Π΅Π½ Π·Π° Ρ‚ΠΎΠ° кој ΠΊΠΎΠ΄ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС смСни. Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π½Π° 100% покриСност Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ со тСстови, ΡˆΡ‚ΠΎ, Π²ΠΎ сСкој ΡΠ»ΡƒΡ‡Π°Ρ˜, ΠΎΠ±ΠΈΡ‡Π½ΠΎ Π½Π΅ Π΅ ΠΈΠ·Π²ΠΎΠ΄Π»ΠΈΠ²ΠΎ. НС Ρ‚Ρ€Π΅Π±Π° Π΄Π° истраТувамС Π²ΠΎ Π΄Π»Π°Π±ΠΎΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π³Π°Ρ‚Π° Π½Π° ΠΎΡŸΠ°ΠΊΠΎΡ‚ Π·Π° Π΄Π° ја ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚.
  • Π”ΡƒΡ€ΠΈ ΠΈ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, mypy чСсто ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ цСлосна ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π²ΠΎ Π΄Π΅Π» ΠΎΠ΄ сСкундата. И ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° тСстовитС ΠΎΠ±ΠΈΡ‡Π½ΠΎ Ρ‚Ρ€Π°Π΅ дСсСтици сСкунди ΠΈΠ»ΠΈ Π΄ΡƒΡ€ΠΈ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ. БистСмот Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ ΠΌΡƒ Π΄Π°Π²Π° инстант ΠΏΠΎΠ²Ρ€Π°Ρ‚Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΎΡ‚ ΠΈ ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° ΠΏΠΎΠ±Ρ€Π·ΠΎ Π΄Π° ја Π²Ρ€ΡˆΠΈ ΡΠ²ΠΎΡ˜Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°. Вој повСќС Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π° ΠΊΡ€Π΅Π²ΠΊΠΈ ΠΈ Ρ‚Π΅ΡˆΠΊΠΈ Π·Π° ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°ΡšΠ΅ Π΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈ тСстови ΠΊΠΎΠΈ Π³ΠΈ Π·Π°ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ вистинскитС Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈ со потсмСвки ΠΈ Π·Π°ΠΊΡ€ΠΏΠΈ само Π·Π° ΠΏΠΎΠ±Ρ€Π·ΠΎ Π΄Π° Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄ тСстот Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚.

IDE-ΠΈΡ‚Π΅ ΠΈ ΡƒΡ€Π΅Π΄Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ PyCharm ΠΈΠ»ΠΈ Visual Studio Code ја користат ΠΌΠΎΡœΡ‚Π° Π½Π° ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π·Π° Π΄Π° ΠΈΠΌ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚, ΠΈΡΡ‚Π°ΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π½Π°Ρ˜Ρ‡Π΅ΡΡ‚ΠΎ користСнитС Ρ˜Π°Π·ΠΈΡ‡Π½ΠΈ конструкции. А ΠΎΠ²Π° сС само Π΄Π΅Π» ΠΎΠ΄ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈΡ‚Π΅ ΠΎΠ΄ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ. Π—Π° Π½Π΅ΠΊΠΎΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ, сСто ΠΎΠ²Π° Π΅ Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²ΠΎ корист Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ. Ова Π΅ Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ ΠΈΠΌΠ° корист вСднаш ΠΏΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Овој ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π΅ Π±Π°Ρ€Π° посСбСн систСм Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ mypy, ΠΈΠ°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ Π΄Π΅ΠΊΠ° mypy ΠΏΠΎΠΌΠ°Π³Π° ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ конзистСнтни со ΠΊΠΎΠ΄ΠΎΡ‚.

Позадина на mypy

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° mypy Π·Π°ΠΏΠΎΡ‡Π½Π° Π²ΠΎ ОК, Π²ΠΎ ΠšΠ΅ΠΌΠ±Ρ€ΠΈΡŸ, Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΡ€Π΅Π΄ Π΄Π° сС ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡Π°ΠΌ Π½Π° Dropbox. Π’ΠΊΠ»ΡƒΡ‡Π΅Π½ сум, ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΠΌΠΎΠ΅Ρ‚ΠΎ докторско ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅, Π²ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° статички Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ Ρ˜Π°Π·ΠΈΡ†ΠΈ. Π‘Π΅Π² инспириран ΠΎΠ΄ Π΅Π΄Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° Π·Π° постСпСно ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΎΠ΄ ЏСрСми Π‘ΠΈΠ΅ΠΊ ΠΈ Π’Π°Π»ΠΈΠ΄ Π’Π°Ρ…Π°, ΠΈ ΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ β€žΠ’ΠΈΡˆΠ°Π½ Ρ€Π΅ΠΊΠ΅Ρ‚β€œ. Π‘Π΅ ΠΎΠ±ΠΈΠ΄ΠΎΠ² Π΄Π° најдам Π½Π°Ρ‡ΠΈΠ½ΠΈ Π΄Π° Π³ΠΎ користам истиот програмски јазик Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ - ΠΎΠ΄ ΠΌΠ°Π»ΠΈ скрипти Π΄ΠΎ Π±Π°Π·ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΡˆΡ‚ΠΎ сС ΡΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΎΠ΄ ΠΌΠ½ΠΎΠ³Ρƒ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π»ΠΈΠ½ΠΈΠΈ. Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, сакав Π΄Π° сС осигурам Π΄Π΅ΠΊΠ° Π²ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΠ΄ кој Π±ΠΈΠ»ΠΎ ΠΎΠ±Π΅ΠΌ, Ρ‡ΠΎΠ²Π΅ΠΊ Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΡ€Π° Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΠΏΡ€Π΅Π³ΠΎΠ»Π΅ΠΌΠΈ компромиси. Π’Π°ΠΆΠ΅Π½ Π΄Π΅Π» ΠΎΠ΄ сСто ΠΎΠ²Π° бСшС ΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π° Π·Π° постСпСно ΠΏΡ€Π΅ΠΌΠΈΠ½ΡƒΠ²Π°ΡšΠ΅ ΠΎΠ΄ Π½Π΅Π²Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠ½ сСопфатно тСстиран статички Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ Π³ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄. Π”Π΅Π½ΠΎΠ²ΠΈΠ²Π΅ ΠΎΠ²ΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅Ρ€Π° сС Π·Π΅ΠΌΠ°Π°Ρ‚ Π·Π΄Ρ€Π°Π²ΠΎ Π·Π° Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Π½ΠΎ Π²ΠΎ 2010 Π³ΠΎΠ΄ΠΈΠ½Π° Ρ‚ΠΎΠ° бСшС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ кој сè ΡƒΡˆΡ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡˆΠ΅.

ΠœΠΎΡ˜Π°Ρ‚Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π²ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π΅ бСшС насочСна ΠΊΠΎΠ½ ΠŸΠ°Ρ˜Ρ‚ΠΎΠ½. НамСсто Ρ‚ΠΎΠ°, користСв ΠΌΠ°Π» β€žΠ΄ΠΎΠΌΠ°ΡˆΠ΅Π½β€œ јазик АлорС. Π•Π²Π΅ Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡˆΡ‚ΠΎ ќС Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π·Π° ΡˆΡ‚ΠΎ Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ (ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΈΠΏΠΎΡ‚ сС ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΎΠ²Π΄Π΅):

def Fib(n as Int) as Int
  if n <= 1
    return n
  else
    return Fib(n - 1) + Fib(n - 2)
  end
end

ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° поСдноставСн ΠΌΠ°Ρ˜Ρ‡ΠΈΠ½ јазик Π΅ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ пристап ΡˆΡ‚ΠΎ сС користи Π²ΠΎ Π½Π°ΡƒΡ‡Π½ΠΎΡ‚ΠΎ ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅. Ова Π΅ Ρ‚Π°ΠΊΠ°, Π½Π΅ само Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π±Ρ€Π·ΠΎ Π΄Π° спровСдСтС СкспСримСнти, Π° исто Ρ‚Π°ΠΊΠ° ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ‚ ΡˆΡ‚ΠΎ ΠΎΠ½Π° ΡˆΡ‚ΠΎ Π½Π΅ΠΌΠ° Π½ΠΈΠΊΠ°ΠΊΠ²Π° врска со ΡΡ‚ΡƒΠ΄ΠΈΡ˜Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΡΠΊΠΈΡ‚Π΅ Ρ˜Π°Π·ΠΈΡ†ΠΈ Π²ΠΎ Ρ€Π΅Π°Π»Π½ΠΈΠΎΡ‚ свСт ΠΈΠΌΠ°Π°Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡ˜Π° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ Ρ„Π΅Π½ΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ΄ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ со слоТСни ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π° Ρ‚ΠΎΠ° Π³ΠΎ Π·Π°Π±Π°Π²ΡƒΠ²Π° Π΅ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ. Π‘Π΅ΠΏΠ°ΠΊ, ситС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ засновани Π½Π° поСдноставСн јазик ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ‚ ΠΌΠ°Π»ΠΊΡƒ сомнитСлни, бидСјќи ΠΏΡ€ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ²ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ истраТувачот ΠΌΠΎΠΆΠ΅Π±ΠΈ ΠΆΡ€Ρ‚Π²ΡƒΠ²Π°Π» Ρ€Π°Π·ΠΌΠΈΡΠ»ΡƒΠ²Π°ΡšΠ° Π²Π°ΠΆΠ½ΠΈ Π·Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Π°Ρ‚Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° Ρ˜Π°Π·ΠΈΡ†ΠΈΡ‚Π΅.

ΠœΠΎΡ˜Π°Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π·Π° Alore изглСдашС ΠΌΠ½ΠΎΠ³Ρƒ Π²Π΅Ρ‚ΡƒΠ²Π°Ρ‡ΠΊΠ°, Π½ΠΎ сакав Π΄Π° ја тСстирам со Π΅ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΡšΠ΅ со вистински ΠΊΠΎΠ΄, кој, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Π½Π΅ бСшС напишан Π²ΠΎ Alore. Π—Π° моја ΡΡ€Π΅ΡœΠ°, Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Alore Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅Ρ€Π° сС засновашС Π½Π° иститС ΠΈΠ΄Π΅ΠΈ ΠΊΠ°ΠΊΠΎ ΠΈ Python. Π‘Π΅ΡˆΠ΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ лСсно Π΄Π° сС ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ со синтаксата ΠΈ сСмантиката Π½Π° ΠŸΠ°Ρ˜Ρ‚ΠΎΠ½. Ова Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΠΏΡ€ΠΎΠ±Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° Python со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, напишав Ρ‚Ρ€Π°Π½ΡΠΏΠ°Ρ˜Π»Π΅Ρ€ Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ напишан Π²ΠΎ Alore Π²ΠΎ ΠΊΠΎΠ΄ Π½Π° Python ΠΈ Π³ΠΎ користСв Π·Π° Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Π²Π΅Π΄Π°ΠΌ ΠΌΠΎΡ˜ΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚. Π‘Π΅Π³Π° ΠΈΠΌΠ°Π² систСм Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ напишан Π²ΠΎ Python кој ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°ΡˆΠ΅ подмноТСство Π½Π° Python, нСкој Π²ΠΈΠ΄ Π½Π° Ρ‚ΠΎΡ˜ јазик! (ΠžΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ архитСктонски ΠΎΠ΄Π»ΡƒΠΊΠΈ ΠΊΠΎΠΈ ΠΈΠΌΠ°Π° смисла Π·Π° Alore Π±Π΅Π° слабо ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ Π·Π° Python, ΠΈ Ρ‚ΠΎΠ° сè ΡƒΡˆΡ‚Π΅ Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠ»ΠΈΠ²ΠΎ Π²ΠΎ Π΄Π΅Π»ΠΎΠ²ΠΈ ΠΎΠ΄ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ mypy.)

Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ ΠΎΠ΄ ΠΌΠΎΡ˜ΠΎΡ‚ типски систСм Π²ΠΎ овој ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ моТСшС сосСма Π΄Π° сС Π½Π°Ρ€Π΅Ρ‡Π΅ Python: Ρ‚ΠΎΡ˜ бСшС Π²Π°Ρ€ΠΈΡ˜Π°Π½Ρ‚Π° Π½Π° Python ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ° Π½Π° синтаксата Π·Π° ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΡ‚ Python 3.

ИзглСдашС како мСшавина од Java и Python:

int fib(int n):
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

Π•Π΄Π½Π° ΠΎΠ΄ ΠΌΠΎΠΈΡ‚Π΅ ΠΈΠ΄Π΅ΠΈ Π²ΠΎ Ρ‚ΠΎΠ° Π²Ρ€Π΅ΠΌΠ΅ бСшС Π΄Π° користам ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ Π·Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°ΠΌ пСрформанситС со ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° овој Π²ΠΈΠ΄ Python Π²ΠΎ C, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ JVM Π±Π°Ρ˜Ρ‚Π΅ΠΊΠΎΠ΄. Π‘Ρ‚ΠΈΠ³Π½Π°Π² Π΄ΠΎ Ρ„Π°Π·Π° Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚, Π½ΠΎ ја Π½Π°ΠΏΡƒΡˆΡ‚ΠΈΠ² ΠΎΠ²Π°Π° идСја, бидСјќи самото ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ изглСдашС доста корисно.

На ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π³ΠΎ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚ΠΈΡ€Π°Π² ΠΌΠΎΡ˜ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° PyCon 2013 Π²ΠΎ Π‘Π°Π½Ρ‚Π° ΠšΠ»Π°Ρ€Π°. Π—Π±ΠΎΡ€ΡƒΠ²Π°Π² Π·Π° ΠΎΠ²Π° ΠΈ со Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Росум, Π΄ΠΎΠ±Ρ€ΠΎΠ½Π°ΠΌΠ΅Ρ€Π½ΠΈΠΎΡ‚ Π΄ΠΈΠΊΡ‚Π°Ρ‚ΠΎΡ€ Π½Π° ΠŸΠ°Ρ˜Ρ‚ΠΎΠ½ Π΄ΠΎΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎ. Вој ΠΌΠ΅ ΡƒΠ±Π΅Π΄ΠΈ Π΄Π° ја ΠΎΡ‚Ρ„Ρ€Π»Π°ΠΌ сопствСната синтакса ΠΈ Π΄Π° сС ΠΏΡ€ΠΈΠ΄Ρ€ΠΆΡƒΠ²Π°ΠΌ Π΄ΠΎ стандардната синтакса Π½Π° Python 3. Python 3 ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΌΠΎΡ˜ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ, ΡˆΡ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π° со Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Python ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°:

def fib(n: int) -> int:
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

ΠœΠΎΡ€Π°Π² Π΄Π° Π½Π°ΠΏΡ€Π°Π²Π°ΠΌ Π½Π΅ΠΊΠΎΠΈ компромиси (Π½Π°Ρ˜ΠΏΡ€Π²ΠΎ, сакам Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠ°ΠΌ Π΄Π΅ΠΊΠ° измислив сопствСна синтакса Ρ‚ΠΎΠΊΠΌΡƒ ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΎΠ²Π°Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°). ОсобСно, Python 3.3, Π½Π°Ρ˜Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π²ΠΎ Ρ‚ΠΎΠ° Π²Ρ€Π΅ΠΌΠ΅, Π½Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°ΡˆΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ. Π Π°Π·Π³ΠΎΠ²Π°Ρ€Π°Π² со Π“Π²ΠΈΠ΄ΠΎ ΠΏΡ€Π΅ΠΊΡƒ Π΅-ΠΏΠΎΡˆΡ‚Π° Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ моТности Π·Π° синтаксичко Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ‚Π°ΠΊΠ²ΠΈ ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ. РСшивмС Π΄Π° користимС ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. Ова ја послуТи Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π°, Π½ΠΎ бСшС Π΄ΠΎΠ½Π΅ΠΊΠ°Π΄Π΅ Π½Π΅Π·Π³ΠΎΠ΄Π½ΠΎ (Python 3.6 Π½ΠΈ Π΄Π°Π΄Π΅ ΠΏΠΎΡƒΠ±Π°Π²Π° синтакса):

products = []  # type: List[str]  # Eww

ΠšΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ Π·Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ исто Ρ‚Π°ΠΊΠ° Π±Π΅Π° корисни Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° Python 2, кој Π½Π΅ΠΌΠ° Π²Π³Ρ€Π°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΏΡ€ΠΈΠ±Π΅Π»Π΅ΡˆΠΊΠΈ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ:

f fib(n):
    # type: (int) -> int
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

Π‘Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π΄Π΅ΠΊΠ° ΠΎΠ²ΠΈΠ΅ (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ) компромиси Π½Π΅ сС навистина Π²Π°ΠΆΠ½ΠΈ - ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈΡ‚Π΅ ΠΎΠ΄ статичкото ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π·Π½Π°Ρ‡Π΅Π° Π΄Π΅ΠΊΠ° корисницитС наскоро Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ ΠΈΠ΄Π΅Π°Π»Π½Π°Ρ‚Π° синтакса. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Π½Π΅ Π±Π΅Π° користСни посСбни синтаксички конструкции Π²ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° Python, постоСчкитС Python Π°Π»Π°Ρ‚ΠΊΠΈ ΠΈ процСситС Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ˜Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ, ΡˆΡ‚ΠΎ ΠΈΠΌ олСснува Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π΄Π° ја Π½Π°ΡƒΡ‡Π°Ρ‚ Π½ΠΎΠ²Π°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ°.

Π“Π²ΠΈΠ΄ΠΎ, исто Ρ‚Π°ΠΊΠ°, ΠΌΠ΅ ΡƒΠ±Π΅Π΄ΠΈ Π΄Π° сС ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡Π°ΠΌ Π½Π° Dropbox ΠΎΡ‚ΠΊΠ°ΠΊΠΎ Π³ΠΎ Π·Π°Π²Ρ€ΡˆΠΈΠ² ΠΌΠΎΡ˜ΠΎΡ‚ дипломски Ρ‚Ρ€ΡƒΠ΄. Π’ΡƒΠΊΠ° Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° Π½Π°Ρ˜ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π°Ρ‚Π° Π·Π° mypy.

Π”Π° сС ​​продолТи ...

ΠŸΠΎΡ‡ΠΈΡ‚ΡƒΠ²Π°Π½ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Ако користитС Python, ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½ΠΈ Π·Π° ΠΎΠ±Π΅ΠΌΠΎΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΡˆΡ‚ΠΎ Π³ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚Π΅ Π½Π° овој јазик.

ΠŸΠ°Ρ‚ΠΎΡ‚ Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ Python ΠΊΠΎΠ΄. Π”Π΅Π» 1
ΠŸΠ°Ρ‚ΠΎΡ‚ Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΡ‚ Π½Π° 4 ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΎΠ΄ Python ΠΊΠΎΠ΄. Π”Π΅Π» 1

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€