ΠΠ½Π΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΌΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΡΠ²Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Dropbox ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΡΠΈΠΏΠ° Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Python.
Dropbox ΠΏΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° Python. Π’ΠΎΠ²Π° Π΅ Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠΎΠΊΠΎ, ΠΊΠ°ΠΊΡΠΎ Π·Π° back-end ΡΡΠ»ΡΠ³ΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° Π½Π°ΡΡΠΎΠ»Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠ΅ ΡΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Go, TypeScript ΠΈ Rust, Π½ΠΎ Python Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π½ΠΈ Π΅Π·ΠΈΠΊ. ΠΠΌΠ°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π½Π°ΡΠΈΡ ΠΌΠ°ΡΠ°Π±, Π° Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΊΠΎΠ΄ Π½Π° 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. Π£ΡΠ°ΡΡΠ²Π°Π» ΡΡΠΌ, ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΠΌΠΎΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΎΡΡΠΊΠΈ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡ, Π² ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ Π΅Π·ΠΈΡΠΈ. ΠΡΡ Π²Π΄ΡΡ Π½ΠΎΠ²Π΅Π½ ΠΎΡ ΡΡΠ°ΡΠΈΡ Π·Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎΡΠΎ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡ ΠΎΡ Jeremy Siek ΠΈ Walid Taha ΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° 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, Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° ΠΏΠΎ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅, Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. ΠΠ±ΡΡΠ΄ΠΈΡ Ρ Guido ΠΏΠΎ ΠΈΠΌΠ΅ΠΉΠ» ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅Π½ Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ. Π Π΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. Π’ΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π°ΡΠ° ΡΠ΅Π», Π½ΠΎ Π±Π΅ΡΠ΅ Π΄ΠΎΠ½ΡΠΊΡΠ΄Π΅ ΡΡΠΎΠΌΠ°Π²ΠΎ (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, ΠΌΠΎΠ»Ρ, ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π½ΠΈ Π·Π° ΠΌΠ°ΡΠ°Π±Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com