ΠΠ½Π΅Ρ Π²ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ ΠΏΡΡΠ²Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π² Dropbox ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π° Python ΠΊΠΎΠ΄Π°.
Π Dropbox ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΠ΅ΠΌ Π½Π° Python. Π’ΠΎΠ²Π° Π΅ Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠΎΠΊΠΎ β ΠΊΠ°ΠΊΡΠΎ Π·Π° Π±Π΅ΠΊΠ΅Π½Π΄ ΡΡΠ»ΡΠ³ΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Go, TypeScript ΠΈ Rust Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°, Π½ΠΎ Python Π΅ Π½Π°ΡΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π΅Π½ Π΅Π·ΠΈΠΊ. ΠΠ°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π½Π°ΡΠΈΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈ, Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ Python ΠΊΠΎΠ΄, ΡΡΠ°Π½Π° ΡΡΠ½ΠΎ, ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π°ΡΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°ΠΊΡΠ² ΠΊΠΎΠ΄ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΡ ΠΈ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° Π²Π»ΠΈΡΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. ΠΠ° Π΄Π° ΡΠΌΠ΅ΠΊΡΠΈΠΌ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π΄Π° ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π½Π°ΡΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ mypy. Π’ΠΎΠ²Π° Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°ΡΠ° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° Python. Mypy Π΅ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π² Dropbox.
Dropbox ΡΠ΅ ΠΎΠΊΠ°Π·Π° Π΅Π΄Π½Π° ΠΎΡ ΠΏΡΡΠ²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡΡΠΎ Π²Π½Π΅Π΄ΡΠΈ ΡΡΠ°ΡΠΈΡΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π² Python ΠΊΠΎΠ΄ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ°ΡΠ°Π±. Π Π½Π°ΡΠΈ Π΄Π½ΠΈ mypy ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. Π’ΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ Π±Π΅Π·Π±ΡΠΎΠΉ ΠΏΡΡΠΈ, Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅ "Π² Π±ΠΎΡ". ΠΠ° Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ΠΌ Π΄ΠΎ ΠΌΡΡΡΠΎΡΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠΌΠ΅ ΡΠ΅Π³Π°, ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠ²ΠΈΠΌ Π΄ΡΠ»ΡΠ³ ΠΏΡΡ. ΠΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΡ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΈ Π½Π°ΡΠΈΠ½Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π°Π»ΠΈΠ»ΠΈ ΡΠ΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ. Π’ΠΎΠ·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΡΠ°Π·ΠΊΠ°Π·Π²Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π² Python β ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ°Π»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π±Π΅ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΠΌΠΎΡ Π½Π°ΡΡΠ΅Π½ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡ, Π΄ΠΎ Π΄Π½Π΅ΡΠ½ΠΈΡ Π΄Π΅Π½, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΡΠ°Π½Π°Ρ Π° ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈ Π·Π° Π±Π΅Π·Π±ΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΈΡΠ°Ρ Π½Π° Python. Π’Π΅Π·ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ β ΠΊΠ°ΡΠΎ IDE ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ Π½Π° ΠΊΠΎΠ΄.
β
ΠΠ°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅?
ΠΠΊΠΎ Π½ΡΠΊΠΎΠ³Π° ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ Python, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π½Π΅ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ ΡΡΠ°ΡΠΈΡΠ½Π°ΡΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΈ mypy Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΎΠΆΠ΅ Π±ΠΈ Π΄ΠΎΡΠΈ Ρ Π°ΡΠ΅ΡΠ²Π°ΡΠ΅ Python ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π°ΡΠ°Π΄ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π°ΡΠ° ΠΌΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π²ΠΈ ΡΠ°Π·ΡΡΡΠΎΠΉΠ²Π°. ΠΠ»ΡΡΡΡ ΠΊΡΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π°ΡΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΅ ΠΌΠ°ΡΠ°Π±Π° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ°: ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π²ΠΈ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-ΡΠΈΠ»Π½ΠΎ ΡΠ΅ Π½Π°ΡΠΎΡΠ²Π°ΡΠ΅ ΠΊΡΠΌ ΡΡΠ°ΡΠΈΡΠ½Π°ΡΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΠΈ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΠΈ Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π°Π» ΡΠ°Π·ΠΌΠ΅ΡΠΈ ΠΎΡ Π΄Π΅ΡΠ΅ΡΠΊΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ ΠΈ Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΎ, ΡΠ΅ Π²ΡΡΡ Ρ Π½Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ ΡΠ°ΠΊΡΠ² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ ΠΎΠΏΠΈΡ, ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΠΌΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΊΠ»ΡΡΡΡ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅. ΠΠ΅Π· Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΡΠΎ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠ²ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡΡΠ°. ΠΡΠΎ Π½ΡΠΊΠΎΠΈ ΡΠΈΠΏΠΈΡΠ½ΠΈ Π²ΡΠΏΡΠΎΡΠΈ, Π½Π° ΠΊΠΎΠΈΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π±Π΅Π· ΡΠΈΠΏΠΎΠ²ΠΈ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ:
- ΠΠΎΠΆΠ΅ Π»ΠΈ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π° Π²ΡΡΠ½Π΅
ΠΡΠΌΠ°? - ΠΠ°ΠΊΡΠ² ΡΠΈΠΏ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠΎΠ·ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ
items? - ΠΠ°ΠΊΡΠ² Π΅ ΡΠΈΠΏΡΡ Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ°
ΠΈΠ΄:intΠ»ΠΈ Π΅ ΡΠΎΠΉ,str, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π΅ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΡΠΈΠΏ? - Π’ΡΡΠ±Π²Π° Π»ΠΈ ΡΠΎΠ·ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΄Π° Π±ΡΠ΄Π΅ ΡΠΏΠΈΡΡΠΊ? ΠΠΎΠΆΠ΅ Π»ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π°Π΄Π΅ ΠΊΠΎΡΡΠ΅ΠΆ?
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΎΡ ΠΊΠΎΠ΄, ΡΠ½Π°Π±Π΄Π΅Π½ Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π²ΡΠΏΡΠΎΡΠΈ, ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠ° Π·Π°Π΄Π°ΡΠ°:
class Resource:
id: bytes
...
def read_metadata(self,
items: Sequence[str]) -> Dict[str, MetadataItem]:
...read_metadataΠ½Π΅ Π²ΡΡΡΠ°ΠΡΠΌΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΈΠΏ Π½Π΅ Π΅Optional[β¦].- ΠΡΠ³ΡΠΌΠ΅Π½Ρ
itemsβ ΡΠΎΠ²Π° Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ Π½ΠΈΠ·ΠΎΠ²Π΅. ΠΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΡΠ΅ΡΠΈΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ΅Π΄. - ΠΡΡΠΈΠ±ΡΡΡΡ
ΠΈΠ΄β ΡΠΎΠ²Π° Π΅ Π±Π°ΠΉΡΠΎΠ²Π° Π½ΠΈΠ·.
Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ°ΠΊΠ²Π°ΠΌΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½ΡΠ°Π½ΡΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² Π²Π³ΡΠ°Π΄Π΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (docstring). ΠΠΎ ΠΎΠΏΠΈΡΡΡ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² ΠΊΠΎΠ΄Π°, Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ, ΡΠ΅ΡΡΠΎ Π»ΠΈΠΏΡΠ²Π°. ΠΠΎΡΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°ΠΊΠ°Π²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΡΡΡΠ²Π°, Π½ΡΠΌΠ° ΠΊΠ°ΠΊ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΠΌΠ΅ Π½Π° Π½Π΅ΠΉΠ½Π°ΡΠ° Π°Π±ΡΠΎΠ»ΡΡΠ½Π° ΡΠΎΡΠ½ΠΎΡΡ. Π’Π°Π·ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π΅ΡΡΠ½Π°, Π½Π΅ΡΠΎΡΠ½Π° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. Π Π³ΠΎΠ»Π΅ΠΌΠΈ Π΅ΠΊΠΈΠΏΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ°Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ°Π½Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΡΡΡΠΎ.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Python ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΡΠ»ΠΈΡΠ½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π² ΡΠ°Π½Π½ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΏΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Python, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ Ρ ΠΆΠΈΠ·Π½Π΅Π½ΠΎΠ²Π°ΠΆΠ½ΠΈΡ Π²ΡΠΏΡΠΎΡ: βΠ’ΡΡΠ±Π²Π° Π»ΠΈ Π΄Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΎ Π½Π° Π΅Π·ΠΈΠΊ ΡΡΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅?β
Π‘ΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, ΠΊΠ°ΡΠΎ mypy, ΡΠ΅ΡΠ°Π²Π°Ρ Π³ΠΎΡΠ΅ΠΏΠΎΡΠΎΡΠ΅Π½Π°ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΠΎΡΠΌΠ°Π»Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΠΊΠΈ, ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΡΠ° ΠΈΠΌ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ (ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΠΊΠΈ ΡΡΡ Π½ΠΎΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅). ΠΠ±ΡΠΎΡΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π΅, ΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π½Π΅ΡΠΎ ΠΊΠ°ΡΠΎ ΡΡΡΠΈΠΊΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΠΌΠ° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ° Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ:
- Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ Π½ΡΠΊΠΎΠΈ ΠΌΠ°Π»ΠΊΠΈ (ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΌΠ°Π»ΠΊΠΈ) Π³ΡΠ΅ΡΠΊΠΈ. Π’ΠΈΠΏΠΈΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π΅, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°Π±ΡΠ°Π²ΠΈΠΌ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡ
ΠΡΠΌΠ°ΠΈΠ»ΠΈ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ Π΄ΡΡΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅. - Π Π΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ΡΡ Π½Π° ΠΊΠΎΠ΄Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΎΠΏΡΠΎΡΡΡΠ²Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΡΠ² ΠΊΠΎΠ΄ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΠΌΠ΅ Π½Π° 100% ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° Ρ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ Π΄ΡΠ»Π±ΠΎΡΠΈΠ½ΠΈΡΠ΅ Π½Π° ΠΎΡΡΠ΅ΡΠΈΡΠ΅ ΠΎΡ ΡΡΠ°ΡΠΈΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ΅ΠΊΠ°, Π·Π° Π΄Π° ΡΠ°Π·ΠΊΡΠΈΠ΅ΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° Π½Π΅ΠΈΠ·ΠΏΡΠ°Π²Π½ΠΎΡΡΡΠ°.
- ΠΠΎΡΠΈ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ mypy ΡΠ΅ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ ΠΏΡΠ»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠ°ΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΠ½Π΄Π°ΡΠ°. Π ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΎΡΠ½Π΅ΠΌΠ° Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΠΌΠΈΠ½ΡΡΠΈ. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ° ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° ΠΈ ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ. ΠΠ΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΏΠΈΡΠ΅ Π½Π΅ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ ΠΈ ΡΡΡΠ΄Π½ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ Ρ ΠΌΠΎΠΊΠ° ΠΈ ΠΏΠ°ΡΠΎΠ²Π΅ ΡΠ°ΠΌΠΎ Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΏΠΎ-Π±ΡΡΠ·ΠΎ.
IDE ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ, ΠΊΠ°ΡΠΎ PyCharm ΠΈΠ»ΠΈ Visual Studio Code, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π°, Π·Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π ΡΠΎΠ²Π° Π΅ ΡΠ°ΠΌΠΎ ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΡΠ°. ΠΠ° Π½ΡΠΊΠΎΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ ΠΎΡΠ½ΠΎΠ²Π΅Π½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΏΠΎΠ»Π·Π° Π½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΡΠ°. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΎΡΠΈ ΠΏΠΎΠ»Π·Π° Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π² ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ. Π’ΠΎΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, ΠΊΠ°ΡΠΎ mypy, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ mypy ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΊΠΎΠ΄Π°.
ΠΡΠ΅Π΄ΠΈΡΡΠΎΡΠΈΡ Π½Π° mypy
ΠΡΡΠΎΡΠΈΡΡΠ° Π½Π° mypy Π·Π°ΠΏΠΎΡΠ½Π° Π² ΠΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΎΡΠΎ ΠΊΡΠ°Π»ΡΡΠ²ΠΎ, Π² ΠΠ΅ΠΉΠΌΠ±ΡΠΈΠ΄ΠΆ, Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½Ρ ΠΊΡΠΌ Dropbox. ΠΠ°Π½ΠΈΠΌΠ°Π²Π°Ρ ΡΠ΅ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΄ΠΎΠΊΡΠΎΡΠ°Ρ Ρ Π²ΡΠΏΡΠΎΡΠ° Π·Π° ΡΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ Π΅Π·ΠΈΡΠΈ. ΠΠ΄ΡΡ Π½ΠΎΠ²ΡΠ²Π°ΡΠ΅ ΠΌΠ΅ ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½Π΅ ΠΎΡ ΠΠΆΠ΅ΡΠ΅ΠΌΠΈ Π‘ΠΈΠ΅ΠΊ ΠΈ ΠΠ°Π»ΠΈΠ΄Π° Π’Π°Ρ , ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Typed Racket. ΠΠΏΠΈΡΠ²Π°Ρ ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΡ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ Π΅Π·ΠΈΠΊ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ - ΠΎΡ ΠΌΠ°Π»ΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π΄ΠΎ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π±Π°Π·ΠΈ, ΡΡΡΡΠΎΡΡΠΈ ΡΠ΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅. ΠΠ΅Π»Π°Π½ΠΈΠ΅ΡΠΎ ΠΌΠΈ Π±Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΡΠ² ΠΌΠ°ΡΠ°Π± Π΄Π° Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ²ΡΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ. ΠΠ°ΠΆΠ½Π° ΡΠ°ΡΡ ΠΎΡ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΈΠ΄Π΅ΡΡΠ° Π·Π° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π΅Π½ ΠΏΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ Π½Π΅ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎ Π²ΡΠ΅ΡΡΡΠ°Π½Π½ΠΎ ΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ Π·Π°Π²ΡΡΡΠ΅Π½ ΠΏΡΠΎΠ΄ΡΠΊΡ. ΠΠ½Π΅Ρ ΡΠ΅Π·ΠΈ ΠΈΠ΄Π΅ΠΈ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΡΠ΅ΠΏΠ΅Π½ ΡΠ΅ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΊΠ°ΡΠΎ Π΄Π°Π΄Π΅Π½ΠΎΡΡ, Π½ΠΎ ΠΏΡΠ΅Π· 2010 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠΉΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°ΡΠ΅.
ΠΠΎΡΡΠ° ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° ΡΠ°Π±ΠΎΡΠ° Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ Π±Π΅ΡΠ΅ Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ Python. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ°Π»ΡΠΊ "ΡΠ°ΠΌΠΎΠ΄Π΅Π»Π½ΠΎ Π½Π°ΠΏΡΠ°Π²Π΅Π½" Π΅Π·ΠΈΠΊ. . ΠΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π·Π° ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ (Π°Π½ΠΎΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠΊ):
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. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΎΠΏΠΈΡΠ°ΠΌ Π΄Π° ΠΈΠ·Π²ΡΡΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π² ΠΎΡΠΊΡΠΈΡΠΈΡ 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. Π’ΠΎΠΉ ΠΌΠ΅ ΡΠ±Π΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ° ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ΄ΡΡΠΆΠ°ΠΌ ΠΊΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° 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] # Π£ΡΠΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ Ρ ΡΠΈΠΏΠΎΠ²Π΅, ΠΎΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠ΅ ΠΎΠΊΠ°Π·Π°Ρ Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Python 2, Π² ΠΊΠΎΠΉΡΠΎ Π½ΡΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅:
def fib(n):
Β Β Β Β # type: (int) -> int
Β Β Β Β if n <= 1:
Β Β Β Β Β Β Β Β return n
Β Β Β Β else:
Β Β Β Β Β Β Β Β return fib(n - 1) + fib(n - 2)ΠΠΊΠ°Π·Π° ΡΠ΅, ΡΠ΅ ΡΠ΅Π·ΠΈ (ΠΈ Π΄ΡΡΠ³ΠΈ) ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ Π²ΡΡΡΠ½ΠΎΡΡ Π½ΡΠΌΠ°Ρ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠ½Π°ΡΠ° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ²Π΅Π΄ΠΎΡ Π° Π΄ΠΎ ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π±ΡΡΠ·ΠΎ Π·Π°Π±ΡΠ°Π²ΠΈΡ Π° Π·Π° Π½Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅Π³Π° Π² Python ΠΊΠΎΠ΄, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡ Π° Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»Π΅ΡΠ½ΠΈ ΡΡΠ²ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅.
ΠΠ²ΠΈΠ΄ΠΎ, ΠΎΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΌΠ΅ ΡΠ±Π΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½Ρ ΠΊΡΠΌ Dropbox ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π·Π°ΡΠΈΡΠΈΡ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½Π°ΡΠ° ΡΠΈ ΡΠ°Π±ΠΎΡΠ°. Π’ΡΠΊ Π·Π°ΠΏΠΎΡΠ²Π° Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° mypy.
ΠΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ»Π΅Π΄Π²Π°β¦
Π£Π²Π°ΠΆΠ°Π΅ΠΌΠΈ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Python, ΠΌΠΎΠ»Ρ, ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅ ΠΊΠ°ΠΊΡΠ² ΠΌΠ°ΡΠ°Π± Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
