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