ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°Β Python: Π½Π΅Ρ ΡΠΌΡΡΠ»Π° ΠΈΠ΄ΡΠΈ Π½Π°Β ΠΏΠ»Π°ΡΠ½ΡΠ΅ ΠΊΡΡΡΡ ΠΏΠΎΠΊΠ° Π½Π΅Β ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ΡΡ Π²Β Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ
Python ΡΠ°ΒΡΡΠΎ ΡΠΎΒΠ²Π΅ΒΡΡΒΡΡ ΠΈΠ·ΡΒΡΠ°ΡΡ ΡΠ΅ΠΌ, ΠΊΡΠΎ Π½ΠΈΒΠΊΠΎΒΠ³Π΄Π° ΡΠ°Π½ΡΒΡΠ΅ Π½Π΅Β ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°Π». ΠΠ΄Π½ΠΎ ΠΈΠ·Β Π΅Π³ΠΎ ΠΏΡΠ΅ΒΠΈΠΌΡΒΡΠ΅ΡΡΠ²Β β ΡΠ½ΠΈΒΠ²Π΅ΡΒΡΠ°Π»ΡΒΠ½ΠΎΡΡΡ, Π·Π°Β ΡΡΡΡ ΠΊΠΎΒΡΠΎΒΡΠΎΠΉ ΠΎΠ½Β ΠΈΡΒΠΏΠΎΠ»ΡΒΠ·ΡΒΠ΅ΡΒΡΡ ΠΏΡΠΎΒΡΠ΅ΡΒΡΠΈΒΠΎΒΠ½Π°ΒΠ»Π°ΒΠΌΠΈ Π²Β ΡΠ°Π·ΒΠ½ΡΡ ΠΎΠ±ΒΠ»Π°ΒΡΡΡΡ : ΠΎΡΒ ΠΆΡΡΒΠ½Π°ΒΠ»ΠΈΒΡΡΠΈΒΠΊΠΈ Π΄ΠΎΒ ΠΏΡΠΎΒΠ΄Π°ΠΊΡ-ΠΌΠ΅ΒΠ½Π΅Π΄ΠΆΒΠΌΠ΅Π½ΒΡΠ°. ΠΠ³ΠΎ ΠΌΠΎΠΆΒΠ½ΠΎ ΠΏΡΠΈΒΠΌΠ΅ΒΠ½ΡΡΡ Π΄Π»Ρ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΡ ΡΡΒΡΠΈΠ½ΒΠ½ΡΡ Π·Π°ΒΠ΄Π°Ρ: Π½Π°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, ΡΡΠΎΒΠ±Ρ Π²ΠΈΒΠ·ΡΒΠ°ΒΠ»ΠΈΒΠ·ΠΈΒΡΠΎΒΠ²Π°ΡΡ Π±ΠΎΠ»ΡΒΡΠΎΠΉ ΠΎΠ±ΡΒΡΠΌ Π΄Π°Π½ΒΠ½ΡΡ ΠΈΠ»ΠΈ ΡΠΎΒΡΡΠ°Π²ΒΠ»ΡΡΡ ΡΠΏΠΈΡΒΠΊΠΈ Π΄Π΅Π» ΠΈΒ ΠΏΠΎΒΠΊΡΒΠΏΠΎΠΊ. ΠΠ²ΒΡΠΎΡ ΠΈΒ ΠΌΠ΅ΒΠ½Π΅ΒΠ΄ΠΆΠ΅Ρ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΡ Β«ΠΠ½Π°ΒΠ»ΠΈΠ· Π΄Π°Π½ΒΠ½ΡΡ Β» Π²Β Π―Π½ΒΠ΄Π΅ΠΊΡ.ΠΡΠ°ΠΊΒΡΠΈΒΠΊΡΒΠΌΠ΅ ΠΠ½Π½Π° Π§ΡΒΠ²ΠΈΒΠ»ΠΈΒΠ½Π° ΡΠ°ΡΒΡΠΊΠ°ΒΠ·Π°ΒΠ»Π° ΠΊΠ°ΠΊ ΠΎΠΏΒΡΠΈΒΠΌΠΈΒΠ·ΠΈΒΡΠΎΒΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ Π±ΡΡ ΠΈΒ ΡΠ°ΒΠ±ΠΎΒΡΡ ΠΏΡΠΈ ΠΏΠΎΒΠΌΠΎΒΡΠΈ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡ, ΠΊΠ°ΒΠΊΠΈΠ΅ Π±ΠΈΠ±ΒΠ»ΠΈΠΎΒΡΠ΅ΒΠΊΠΈ (ΡΠ°Π±ΒΠ»ΠΎΒΠ½Ρ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΠΉ) ΠΌΠΎΒΠ³ΡΡ ΠΈΡΒΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΡΡ Π½ΠΎΒΠ²ΠΈΡΒΠΊΠΈ ΠΈΒ ΠΊΠ°ΠΊ Π²ΡΒΠ±ΡΠ°ΡΡ ΠΊΡΡΡ ΠΏΠΎΒ ΠΈΠ·ΡΒΡΠ΅ΒΠ½ΠΈΡ Python. ΠΠ°ΒΡΠ΅ΒΡΠΈΒΠ°Π» ΠΏΠΎΠ΄ΒΠ³ΠΎΒΡΠΎΠ²ΒΠ»Π΅Π½ ΠΠΊΠ°ΒΠ΄Π΅ΒΠΌΠΈΒΠ΅ΠΉ Π―Π½ΒΠ΄Π΅ΠΊΒΡΠ°
ΠΠΎΒΡΠ΅ΒΠΌΡ Python ΡΠΎΒΠ²Π΅ΒΡΡΒΡΡ Π½ΠΎΒΠ²ΠΈΡΒΠΊΠ°ΠΌ
ΠΠ΄Π½ΠΎ ΠΈΠ·Β Π³Π»Π°Π²ΒΠ½ΡΡ ΠΏΡΠ΅ΒΠΈΠΌΡΒΡΠ΅ΡΡΠ² PythonΒ β Π½ΠΈΠ·ΒΠΊΠΈΠΉ ΠΏΠΎΒΡΠΎΠ³ Π²Ρ ΠΎΒΠ΄Π°. ΠΠΎΠ΄ Π½Π°Β Π½ΡΠΌ Π»Π°ΒΠΊΠΎΒΠ½ΠΈΡΒΠ½ΡΠΉ ΠΈΒ ΠΎΠ±ΡΡΒΠ½ΠΎ ΡΡ ΠΎΒΠ΄Ρ ΠΏΠΎΒΠ½ΡΒΡΠ΅Π½ Π΄Π°ΠΆΠ΅ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΈΠ·ΡΒΡΠ°Π» Π΄ΡΡΒΠ³ΠΎΠΉ ΡΠ·ΡΠΊ. ΠΒ ΠΏΠΎΒΠ΄ΡΠΎΠ±ΒΠ½Π°Ρ Π΄ΠΎΒΠΊΡΒΠΌΠ΅Π½ΒΡΠ°ΒΡΠΈΡ ΠΏΠΎΒΠΌΠΎΒΠΆΠ΅Ρ ΡΠ°Π·ΠΎΒΠ±ΡΠ°ΡΡΒΡΡ Π²Β ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΠΈ ΡΒ Π½ΡΠ»Ρ.
Π Π΅ΒΡΡΡΒΡΡ Π΄Π»Ρ ΠΈΠ·ΡΒΡΠ΅ΒΠ½ΠΈΡ Python:
ΠΠΎΒΠΊΡΡΠ³ Python ΡΡΠΎΡΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ»ΠΈΡΡ ΡΠΎΒΠΎΠ±ΒΡΠ΅ΒΡΡΠ²Π° ΡΠ½ΒΡΡΒΠ·ΠΈΒΠ°ΒΡΡΠΎΠ², ΠΊΠΎΒΡΠΎΒΡΡΠ΅ ΠΏΠΈΒΡΡΡ Π½Π°Β ΡΡΠΎΠΌ ΡΠ·ΡΒΠΊΠ΅. ΠΠ°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, Π²Β ΠΠΎΡΠΊΠ²Π΅ Π΅ΡΡΡ Π³ΡΡΠΏΒΠΏΠ° Moscow Python: ΠΎΠ½ΠΈ ΠΏΡΠΎΒΠ²ΠΎΒΠ΄ΡΡ ΠΊΠΎΠ½ΒΡΠ΅ΒΡΠ΅Π½ΒΡΠΈΠΈ ΠΈΒ Π½Π΅ΡΠΎΡΒΠΌΠ°Π»ΡΒΠ½ΡΠ΅ Π²ΡΡΡΠ΅ΒΡΠΈ ΠΈΒ ΡΠΎΒΡΡΡΠ΄ΒΠ½ΠΈΒΡΠ°ΒΡΡ ΡΒ ΠΊΡΡΠΏΒΠ½ΡΒΠΌΠΈ ΠΠ’-ΠΊΠΎΠΌΒΠΏΠ°ΒΠ½ΠΈΒΡΒΠΌΠΈ.
ΠΠ»Ρ Python ΡΡΒΡΠ΅ΒΡΡΠ²ΡΒΠ΅Ρ ΠΎΠ±ΡΒΡΠΌΒΠ½Π°Ρ ΡΠΈΒΡΡΠ΅ΒΠΌΠ° Π±ΠΈΠ±ΒΠ»ΠΈΠΎΒΡΠ΅ΠΊΒ β Π³ΠΎΒΡΠΎΒΠ²ΡΡ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΠΉ Π΄Π»Ρ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ Π·Π°ΒΠ΄Π°Ρ. ΠΡΡΡ ΠΊΠ°ΠΊ Π°Π»ΒΠ³ΠΎΒΡΠΈΡΒΠΌΡ Π΄Π»Ρ Π±Π°ΒΠ·ΠΎΒΠ²ΡΡ ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΈΡ ΠΎΠΏΠ΅ΒΡΠ°ΒΡΠΈΠΉ, ΡΠ°ΠΊ ΠΈΒ Π΄Π»Ρ ΡΠ»ΠΎΠΆΒΠ½ΡΡ Π·Π°ΒΠ΄Π°Ρ: Π½Π°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, ΡΠ°ΡΒΠΏΠΎΒΠ·Π½Π°ΒΠ²Π°ΒΠ½ΠΈΡ ΠΊΠ°ΡΒΡΠΈΒΠ½ΠΎΠΊ ΠΈΒ Π·Π²ΡΒΠΊΠΎΠ².
Π£Β ΡΠ·ΡΒΠΊΠ° ΠΌΠ½ΠΎΒΠ³ΠΎ ΠΏΠΎΒΠ½ΡΡΒΠ½ΡΡ ΠΏΡΠΈΒΠ»ΠΎΒΠΆΠ΅ΒΠ½ΠΈΠΉ: Π΅Π³ΠΎ ΠΌΠΎΠΆΒΠ½ΠΎ ΠΈΡΒΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΡΡ Π΄Π»Ρ Π°Π½Π°ΒΠ»ΠΈΒΠ·Π° Π΄Π°Π½ΒΠ½ΡΡ ΠΈΒ ΠΌΠ°ΒΡΠΈΠ½ΒΠ½ΠΎΒΠ³ΠΎ ΠΎΠ±ΡΒΡΠ΅ΒΠ½ΠΈΡ, Π±ΡΒΠΊΠ΅Π½ΒΠ΄Π°, Π²Π΅Π±-ΡΠ°Π·ΒΡΠ°ΒΠ±ΠΎΡΒΠΊΠΈ, ΡΠΈΒΡΡΠ΅ΠΌΒΠ½ΠΎΒΠ³ΠΎ Π°Π΄ΒΠΌΠΈΒΠ½ΠΈΒΡΡΡΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡ ΠΈΒ ΠΈΠ³Ρ. ΠΠΎΒΠ½Π΅ΡΒΠ½ΠΎ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½ΡΒΠΆΠ΅Π½ ΡΠ°Π·ΒΠ½ΡΠΉ Π½Π°ΒΠ±ΠΎΡ Π½Π°ΒΠ²ΡΒΠΊΠΎΠ² ΠΏΠΎΒΠΌΠΈΒΠΌΠΎ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡ, Π½ΠΎΒ ΡΒ Python ΠΌΠΎΠΆΒΠ½ΠΎ Π½Π°ΒΡΠ°ΡΡ ΠΎΡΠ²Π°ΒΠΈΒΠ²Π°ΡΡ ΠΏΠΎΒΡΡΠΈ Π»ΡΒΠ±ΡΡ ΠΏΡΠ΅Π΄ΒΠΌΠ΅ΡΒΠ½ΡΡ ΠΎΠ±ΒΠ»Π°ΡΡΡ.
ΠΠ°ΠΆΒΠ½ΠΎ ΠΏΠΎΒΠ½ΠΈΒΠΌΠ°ΡΡ, ΡΡΠΎ Π΄Π»Ρ Π°Π½Π°ΒΠ»ΠΈΒΠ·Π° Π΄Π°Π½ΒΠ½ΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡΒ β ΡΡΠΎ ΠΈΠ½ΒΡΡΡΡΒΠΌΠ΅Π½Ρ. ΠΠ½Π°ΒΠ»ΠΈΠ· Π΄Π°Π½ΒΠ½ΡΡ ΠΌΠΎΠΆΒΠ½ΠΎ ΠΏΡΠΎΒΠ²ΠΎΒΠ΄ΠΈΡΡ ΠΈΒ Π²Β ExΒcel, ΠΈΒ Π½Π°Β Π±ΡΒΠΌΠ°ΠΆΒΠΊΠ΅, Π°Β ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΠ΅Β β ΡΠΎΠ»ΡΒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ·Β Π²Π°ΒΡΠΈΒΠ°Π½ΒΡΠΎΠ² ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΒΠ½ΠΎ ΡΠ΅ΒΡΠ°ΡΡ ΡΠ°ΒΠΊΠΈΠ΅ Π·Π°ΒΠ΄Π°ΒΡΠΈ.
ΠΠ΄Π½ΠΎ ΠΈΠ·Β ΡΠ°ΡΒΠΏΡΠΎΒΡΡΡΠ°ΒΠ½ΡΠ½ΒΠ½ΡΡ ΠΏΡΠΈΒΠ»ΠΎΒΠΆΠ΅ΒΠ½ΠΈΠΉ PythonΒ β ΡΠ°ΒΠ±ΠΎΒΡΠ° ΡΒ Π΄Π°Π½ΒΠ½ΡΒΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΒΠ΄Π°ΠΊΡ-ΠΌΠ΅ΒΠ½Π΅Π΄ΠΆΒΠΌΠ΅Π½ΒΡΠ°. ΠΠ½Π°ΒΠ»ΠΈΠ· Π΄Π°Π½ΒΠ½ΡΡ ΠΏΠΎΠ·ΒΠ²ΠΎΒΠ»ΡΒΠ΅Ρ ΠΌΠ΅ΒΠ½Π΅ΒΠ΄ΠΆΠ΅ΒΡΠ°ΠΌ ΠΏΠΎΒΠ»ΡΒΡΠ°ΡΡ ΠΈΠ½ΒΡΠ°ΠΉΒΡΡ ΠΎΒ ΠΏΠΎΒΠ²Π΅ΒΠ΄Π΅ΒΠ½ΠΈΠΈ ΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΒΡΠ΅ΒΠ»Π΅ΠΉ ΠΈΒ ΠΏΡΠΈΒΠ½ΠΈΒΠΌΠ°ΡΡ ΠΎΠ±ΠΎΡΒΠ½ΠΎΒΠ²Π°Π½ΒΠ½ΡΠ΅ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΡ. ΠΒ ΠΊΡΡΠΏΒΠ½ΡΡ ΠΊΠΎΠΌΒΠΏΠ°ΒΠ½ΠΈΒΡΡ Π΄ΠΎΠ»ΠΆΒΠ½ΠΎΒΡΡΠΈ Π°Π½Π°ΒΠ»ΠΈΒΡΠΈΒΠΊΠΎΠ² ΠΈΒ ΠΏΡΠΎΒΠ΄Π°ΠΊΡ-ΠΌΠ΅ΒΠ½Π΅ΒΠ΄ΠΆΠ΅ΒΡΠΎΠ² ΠΎΠ±ΡΡΒΠ½ΠΎ ΡΠ°Π·ΒΠ΄Π΅ΒΠ»Π΅ΒΠ½Ρ, Π½ΠΎΒ Π²Β Π½Π΅Π±ΠΎΠ»ΡΒΡΠΈΡ ΠΏΡΠΎΒΠ΅ΠΊΒΡΠ°Ρ ΠΏΡΠΎΒΠ΄Π°ΠΊΒΡΠ°ΠΌ Π½ΡΠΆΒΠ½ΠΎ ΡΠ°ΒΠ±ΠΎΒΡΠ°ΡΡ ΡΒ Π΄Π°Π½ΒΠ½ΡΒΠΌΠΈ ΡΠ°ΒΠΌΠΎΒΡΡΠΎΒΡΒΡΠ΅Π»ΡΒΠ½ΠΎ.
ΠΠ°ΠΊ ΠΏΠΎΒΠ½ΡΡΡ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΒΠΆΠ΅Π½ ΠΈΠΌΠ΅Π½ΒΠ½ΠΎ Python
ΠΠ°ΒΠ·ΡΒΠ²Π°ΡΡ Π΅Π³ΠΎ Β«ΡΠ±ΠΈΠΉΒΡΠ΅ΠΉ ExΒcel» β Π½Π΅ΠΊΠΎΡΒΡΠ΅ΠΊΡΒΠ½ΠΎ. ΠΠ½ΠΎΒΠ³ΠΈΠ΅ ΠΊΠΎΒΠΌΠ°Π½ΒΠ΄Ρ ΠΈΒ ΠΊΠΎΠΌΒΠΏΠ°ΒΠ½ΠΈΠΈ Π²Β Π ΠΎΡΒΡΠΈΠΈ Π²Π΅ΒΠ΄ΡΡ Π²Π΅ΡΡ ΡΡΡΡ Π²Β ΠΎΠ±ΡΡΒΠ½ΡΡ ΡΠ°Π±ΒΠ»ΠΈΒΡΠ°Ρ , ΠΈΒ ΠΈΠΌΒ ΡΡΠΎΒΠ³ΠΎ Π΄ΠΎΒΡΡΠ°ΒΡΠΎΡΒΠ½ΠΎ. ΠΒ Python Π½ΡΒΠΆΠ΅Π½ Π²Β ΡΠΎΡ ΠΌΠΎΒΠΌΠ΅Π½Ρ, ΠΊΠΎΒΠ³Π΄Π° ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΏΡΠΎ Π΄Π΅ΠΉΒΡΡΠ²ΠΈΒΡΠ΅Π»ΡΒΠ½ΠΎ Π±ΠΎΠ»ΡΒΡΠΈΠ΅ ΠΎΠ±ΡΒΠ΅ΒΠΌΡ Π΄Π°Π½ΒΠ½ΡΡ . ΠΠ°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, ΡΒ Π―Π½ΒΠ΄Π΅ΠΊΡ.ΠΡΒΠ·ΡΒΠΊΠΈ ΠΌΠ½ΠΎΒΠΆΠ΅ΒΡΡΠ²ΠΎ ΠΏΠ»Π°ΒΡΡΒΡΠΈΡ ΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΒΡΠ΅ΒΠ»Π΅ΠΉ, ΠΈΒ ΠΈΡ Β Π΄Π΅ΠΉΒΡΡΠ²ΠΈΡ Π΅ΠΆΠ΅ΒΠ΄Π½Π΅Π²ΒΠ½ΠΎ Π³Π΅ΒΠ½Π΅ΒΡΠΈΒΡΡΒΡΡ ΠΊΠ°ΒΠΊΠΈΠ΅-ΡΠΎ ΡΠΎΒΠ±ΡΒΡΠΈΡ (Π»Π°ΠΉΒΠΊΠΈ ΠΈΒ ΠΏΡΠΎΒΡΠ»ΡΒΡΠΈΒΠ²Π°ΒΠ½ΠΈΡ)Β β ΠΈΒ ΡΠ΅ΒΡΠ°ΒΠ±Π°ΠΉΒΡΡ Π΄Π°Π½ΒΠ½ΡΡ . Π₯ΡΠ°ΒΠ½ΠΈΡΡ ΠΈΡ Β Π²Β ΡΠ°Π±ΒΠ»ΠΈΡΒΠΊΠ΅ ExΒcelΒ β ΠΈΠ·Β ΡΠ°Π·ΒΡΡΒΠ΄Π° ΡΠ°Π½ΒΡΠ°ΒΡΡΠΈΒΠΊΠΈ.
ΠΒ Python ΠΏΡΠΎΒΡΠ΅ Π΄Π΅ΒΠ»Π°ΡΡ ΠΈΠ½ΒΡΠ΅ΡΒΠ°ΠΊΒΡΠΈΠ²ΒΠ½ΡΡ ΠΈΒ ΡΠ»ΠΎΠΆΒΠ½ΡΡ Π²ΠΈΒΠ·ΡΒΠ°ΒΠ»ΠΈΒΠ·Π°ΒΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΒΠ²ΠΎΒΠ΄ΠΈΡΡ Π²ΡΒΡΠΈΡΒΠ»Π΅ΒΠ½ΠΈΡΒ β Π΄Π»Ρ ΡΡΠΎΒΠ³ΠΎ ΡΡΒΡΠ΅ΒΡΡΠ²ΡΒΡΡ Π±ΠΈΠ±ΒΠ»ΠΈΠΎΒΡΠ΅ΒΠΊΠΈ Π²ΡΠΎΒΠ΄Π΅ Seaborn, matΒplot ΠΈΒ Plotly. ΠΒ ExΒcel Π΅ΡΡΡ Π²ΡΡΡΠΎΒΠ΅Π½ΒΠ½ΡΠΉ Π°ΠΏΒΠΏΠ°ΒΡΠ°Ρ Π΄Π»Ρ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΡ ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΈΡ Π·Π°ΒΠ΄Π°Ρ (Π½Π°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, ΡΠ°ΒΠ±ΠΎΒΡΡ ΡΒ Π΄Π°Π½ΒΠ½ΡΒΠΌΠΈ), Π½ΠΎΒ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½ΡΠΆΒΠ½ΠΎ Π·Π°ΒΠΏΠΎΒΠΌΠΈΒΠ½Π°ΡΡ ΠΌΠ½ΠΎΒΠ³ΠΎ Π½Π°ΒΠ·Π²Π°ΒΠ½ΠΈΠΉ ΠΎΠΏΠ΅ΒΡΠ°ΒΡΠΈΠΉΒ β ΠΈΒ ΡΠ°ΒΠ±ΠΎΒΡΠ°ΒΠ΅Ρ ΠΎΠ½Β Π΄ΠΎΒΠ²ΠΎΠ»ΡΒΠ½ΠΎ Π½Π΅ΠΏΠΎΒΠ²ΠΎΒΡΠΎΡΒΠ»ΠΈΒΠ²ΠΎ. ΠΡΠΎΒΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Β Python ΠΌΠΎΠΆΒΠ½ΠΎ Π±ΡΡΡΒΡΠ΅Π΅ ΠΈΒ ΡΒ ΡΠ°Π·ΒΠ½ΡΡ ΡΡΠΎΒΡΠΎΠ½ ΠΏΠΎΒΡΠΌΠΎΡΒΡΠ΅ΡΡ Π½Π°Β Π΄Π°Π½ΒΠ½ΡΠ΅. Π Π΅ΒΠ³ΡΠ΅ΡΒΡΠΈΡ ΠΌΠΎΠΆΒΠ½ΠΎ ΠΏΠΎΒΡΡΡΠΎΒΠΈΡΡ ΠΈΒ Π²Β ExΒcel, Π½ΠΎΒ Π·Π°ΒΡΠ΅ΠΌ, ΠΊΠΎΒΠ³Π΄Π° Π²Β Python Π΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΒΠ³ΠΎ Π³ΠΎΒΡΠΎΒΠ²ΡΠ΅ Π±ΠΈΠ±ΒΠ»ΠΈΠΎΒΡΠ΅ΒΠΊΠΈ?
Β©
Jefferson Santos / Unsplash
ΠΠ»Ρ ΡΡΠ°ΒΡΠΈΒΡΡΠΈΒΡΠ΅ΒΡΠΊΠΈΡ ΡΠ°ΡΒΡΠ΅ΒΡΠΎΠ² ΠΌΠΎΠΆΒΠ½ΠΎ ΠΈΡΒΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΡΡ RΒ β Π»ΡΠ΄ΠΈ ΡΒ ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΈΠΌ ΠΎΠ±ΒΡΠ°ΒΠ·ΠΎΒΠ²Π°ΒΠ½ΠΈΒΠ΅ΠΌ ΠΎΠ±ΡΡΒΠ½ΠΎ ΠΎΡΠ²Π°ΒΠΈΒΠ²Π°ΒΡΡ Π΅Π³ΠΎ Π±ΡΡΡΒΡΠ΅Π΅, ΡΠ΅ΠΌ Python. ΠΠ΄ΒΠ½Π°ΒΠΊΠΎ Π±ΠΎΠ»ΡΒΡΠΈΠ½ΒΡΡΠ²Ρ Π±ΡΒΠ΄Π΅Ρ ΠΏΡΠΎΒΡΠ΅ Π½Π°ΒΡΠ°ΡΡ ΡΒ Python.
ΠΠ»Ρ ΡΠ°Π·ΒΠ½ΡΡ Π·Π°ΒΠ΄Π°Ρ Π°Π½Π°ΒΠ»ΠΈΒΠ·Π° Π΄Π°Π½ΒΠ½ΡΡ ΡΡΒΡΠ΅ΒΡΡΠ²ΡΒΡΡ ΠΊΠΎΒΡΠΎΒΠ±ΠΎΡΒΠ½ΡΠ΅ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΡ. ΠΠ°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, AmΒpliΒtude (Π΄Π»Ρ ΠΏΡΠΎΒΠ΄ΡΠΊΒΡΠΎΒΠ²ΠΎΠΉ Π°Π½Π°ΒΠ»ΠΈΒΡΠΈΒΠΊΠΈ), MixΒpanel (Π΄Π»Ρ Π°Π½Π°ΒΠ»ΠΈΒΠ·Π° ΠΏΠΎΒΠ²Π΅ΒΠ΄Π΅ΒΠ½ΠΈΡ ΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΒΡΠ΅ΒΠ»Π΅ΠΉ) Π―Π½ΒΠ΄Π΅ΠΊΡ.ΠΠ΅ΡΒΡΠΈΒΠΊΠ° ΠΈΒ Google AnΒaΒlytΒics. ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡ Β ΠΈΡΒΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΒΠ½ΠΈΠ΅ ΡΠ°ΒΡΡΠΎ ΠΏΠ»Π°ΡΒΠ½ΠΎΠ΅.
ΠΠ΄Π΅ ΠΏΡΠΈΒΠΌΠ΅ΒΠ½ΡΡΡ Python, Π΅ΡΠ»ΠΈ Π²ΡΒ Π½Π΅Β ΡΠ°Π·ΒΡΠ°ΒΠ±ΠΎΡΒΡΠΈΠΊ
ΠΠΎΒΠΌΠΈΒΠΌΠΎ Π°Π½Π°ΒΠ»ΠΈΒΠ·Π° Π΄Π°Π½ΒΠ½ΡΡ ΡΒ ΡΠ·ΡΒΠΊΠ° Π΅ΡΡΡ ΠΈΒ Π±ΠΎΒΠ»Π΅Π΅ ΠΏΡΠΎΒΡΡΡΠ΅ ΠΏΡΠΈΒΠ»ΠΎΒΠΆΠ΅ΒΠ½ΠΈΡ. Π’Π°ΠΊ, Π²Β ΡΡΠ΅Π±ΒΠ½ΠΈΒΠΊΠ°Ρ ΠΏΠΎΒ Python ΡΠ°ΒΡΡΠΎ Π²ΡΡΡΠ΅ΒΡΠ°ΒΠ΅ΡΒΡΡ Π·Π°ΒΠ΄Π°ΒΡΠ° ΡΒ ΡΠ°ΡΒΡΡΠ»ΒΠΊΠ°ΒΠΌΠΈ. ΠΒ Π½Π΅ΠΉ Π½ΡΠΆΒΠ½ΠΎ ΡΠΎΠ·ΒΠ΄Π°ΡΡ ΡΠ°ΡΒΡΡΠ»ΒΠΊΡ, Π½Π°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, Π΄Π»Ρ Π»ΡΒΠ΄Π΅ΠΉ, ΠΊΠΎΒΡΠΎΒΡΡΠ΅ Π½Π΅Β ΡΠ΄Π°ΒΠ»ΠΈ Π΄Π΅Π½ΡΒΠ³ΠΈ Π½Π°Β ΡΠ΅ΒΠΌΠΎΠ½ΡΒ β Π½Π°ΠΉΒΠ΄Ρ ΠΈΡ Β Π΄Π°Π½ΒΠ½ΡΠ΅ Π²Β ExΒcel-ΡΠ°Π±ΒΠ»ΠΈΒΡΠ΅. Π‘Β ΠΏΠΎΒΠΌΠΎΒΡΡΡ ΡΠ°ΒΠΊΠΎΒΠ³ΠΎ ΡΠΊΡΠΈΠΏΒΡΠ° ΠΌΠΎΠΆΒΠ½ΠΎ ΡΠ°Π·ΠΎΒΡΠ»Π°ΡΡ ΠΏΠΈΡΡΒΠΌΠ° ΠΏΠΎΒ ΡΠ°Π±ΒΠ»ΠΎΒΠ½ΡΒ β ΠΈΒ ΠΈΠΌΠ΅ΒΠ½Π° Π±ΡΒΠ΄ΡΡ ΠΏΠΎΠ΄ΒΡΡΠ°Π²ΒΠ»Π΅ΒΠ½Ρ Π°Π²ΒΡΠΎΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΈ.
PythonΒ β ΠΏΡΠΎ Π°Π²ΒΡΠΎΒΠΌΠ°ΒΡΠΈΒΠ·Π°ΒΡΠΈΡ ΡΡΒΡΠΈΠ½ΒΠ½ΡΡ Π·Π°ΒΠ΄Π°Ρ. ΠΠ°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, ΠΌΠΎΠΆΒΠ½ΠΎ Π·Π°ΒΠΏΡΒΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΒΡΠΎΒΡΡΠΉ ΠΏΠΎΠ΄ΒΡΡΠ°Π²ΒΠ»ΡΒΠ΅Ρ ΠΏΠ°ΒΡΠΎΒΠ»ΠΈΒ β ΠΈΒ ΠΎΠ½Β Π°Π²ΒΡΠΎΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΈ ΠΎΡΒΠΊΡΠΎΒΠ΅Ρ Π·Π°ΒΠΏΠ°ΒΡΠΎΒΠ»Π΅Π½ΒΠ½ΡΠ΅ ΡΡΡΠ°ΒΠ½ΠΈΒΡΡ ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΒΠΊΠΈ. ΠΡΡΡ Π°Π»ΒΠ³ΠΎΒΡΠΈΡΒΠΌΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΒΠ±Ρ Π°Π²ΒΡΠΎΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΈ ΡΠΎΒΠ·Π΄Π°ΒΠ²Π°ΡΡ ΡΠΏΠΈΡΒΠΊΠΈ ΠΏΠΎΒΠΊΡΒΠΏΠΎΠΊ ΠΈΠ»ΠΈ ΠΏΠ΅ΒΡΠ΅ΒΠΈΠΌΠ΅ΒΠ½ΠΎΒΠ²ΡΒΠ²Π°ΡΡ ΡΠΎΒΡΠΎΒΠ³ΡΠ°ΒΡΠΈΠΈ ΠΎΠΏΡΠ΅ΒΠ΄Π΅ΒΠ»ΡΠ½ΒΠ½ΡΠΌ ΠΎΠ±ΒΡΠ°ΒΠ·ΠΎΠΌ.
ΠΡΠ΄ΠΈ, ΠΊΠΎΒΡΠΎΒΡΡΠ΅ ΡΠΌΠ΅ΒΡΡ ΠΏΠΈΒΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΏΡΠΈΒΠ΄ΡΒΠΌΡΒΠ²Π°ΒΡΡ ΡΠ°ΒΠΊΠΈΠ΅ Π²Π΅ΡΠΈ Β«Π½Π°Β Π°Π²ΒΡΠΎΒΠΌΠ°ΒΡΠ΅Β». ΠΠ°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, ΠΌΠ°ΡΒΠΊΠ΅ΒΡΠΎΒΠ»ΠΎΒΠ³ΠΈ ΠΌΠΎΒΠ³ΡΡ Π·Π°ΒΠΏΡΒΡΡΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΏΠΎΒΡΡΡΠΎΒΠ΅ΒΠ½ΠΈΡ Π²ΠΎΒΡΠΎΒΠ½ΠΎΠΊ ΠΏΡΠΎΒΠ΄Π°ΠΆ. ΠΒ ΡΠ΅ΒΡΡΠΈΒΡΠΎΠ²ΒΡΠΈΒΠΊΠΈΒ β Π½Π°ΒΠΏΠΈΒΡΠ°ΡΡ Π°Π»ΒΠ³ΠΎΒΡΠΈΡΠΌ, ΠΊΠΎΒΡΠΎΒΡΡΠΉ Π±ΡΒΠ΄Π΅Ρ ΠΏΠΎΠ΄ΒΡΡΠ°Π²ΒΠ»ΡΡΡ Π΄Π°Π½ΒΠ½ΡΠ΅ Π²Β ΡΠΎΡΒΠΌΡ ΠΈΒ ΡΠ΅ΒΡΡΠΈΒΡΠΎΒΠ²Π°ΡΡ ΠΏΡΠΈΒΠ»ΠΎΒΠΆΠ΅ΒΠ½ΠΈΡ.
ΠΡΠ»ΠΈ Π³ΠΎΒΠ²ΠΎΒΡΠΈΡΡ ΠΏΡΠΎ Π°Π½Π°ΒΠ»ΠΈΠ· Π΄Π°Π½ΒΠ½ΡΡ , ΡΠΎΒ ΠΌΠ½ΠΎΒΠ³ΠΈΠ΅ Π½Π°ΒΡΠΈΒΠ½Π°ΒΡΡ ΠΎΡΠ²Π°ΒΠΈΒΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ·Β Π»ΡΒΠ±ΠΎΒΠΏΡΡΒΡΡΠ²Π°Β β ΡΡΠΎΒΠ±Ρ Π½Π°ΠΉΒΡΠΈ ΠΈΠ½ΒΡΠ°ΠΉΒΡΡ Π²Β ΡΡΠ΅ΒΡΠ΅, ΠΊΠΎΒΡΠΎΒΡΡΡ ΠΏΠΎΠΊΠ° Π½Π΅Β ΠΈΡΒΡΠ»Π΅ΒΠ΄ΠΎΒΠ²Π°ΒΠ»ΠΈ. ΠΠ°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, ΠΌΠΎΠΆΒΠ½ΠΎ ΠΎΠΏΡΠ΅ΒΠ΄Π΅ΒΠ»ΠΈΡΡ ΡΠΎΒΡΠΈΒΠ°Π»ΡΒΠ½ΡΠ΅ ΠΏΡΠΎΒΠ±Π»Π΅ΒΠΌΡ ΡΠ²ΠΎΒΠ΅ΒΠ³ΠΎ ΡΠ΅ΒΠ³ΠΈΒΠΎΒΠ½Π°, Π°Π½Π°ΒΠ»ΠΈΒΠ·ΠΈΒΡΡΡ ΠΎΠΏΡΠ±ΒΠ»ΠΈΒΠΊΠΎΒΠ²Π°Π½ΒΠ½ΡΡ ΡΡΠ°ΒΡΠΈΒΡΡΠΈΒΠΊΡ. ΠΒ Π΅ΡΠ»ΠΈ Π²ΡΒ Ρ ΠΎΒΡΠΈΒΡΠ΅ ΡΠ΅ΒΡΠ΅Π· ΠΊΠ°ΒΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΒΠΌΡ ΠΏΠΎΒΠΏΠ°ΡΡΡ Π½Π°Β ΡΡΠ°ΒΠΆΠΈΒΡΠΎΠ²ΒΠΊΡ ΠΈΠ»ΠΈ Π½Π°Β ΡΠ°ΒΠ±ΠΎΒΡΡ, Π³Π΄Π΅ Π½ΡΒΠΆΠ΅Π½ Π°Π½Π°ΒΠ»ΠΈΠ· Π΄Π°Π½ΒΠ½ΡΡ , ΡΠΎΒ ΡΠ°ΒΠΊΠΎΠΉ ΠΊΠ΅ΠΉΡ ΠΏΠΎΒΠΌΠΎΒΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΒΠΊΠ°ΒΠ·Π°ΡΡ ΡΠ²ΠΎΠΈ Π½Π°ΒΠ²ΡΒΠΊΠΈ. ΠΠ°ΒΡΠ°ΡΡ ΠΌΠΎΠΆΒΠ½ΠΎ ΡΒ ΠΏΡΠΎΒΡΡΡΡ , ΡΡΠ°Π½ΒΠ΄Π°ΡΡΒΠ½ΡΡ ΠΏΡΠΎΒΠ΅ΠΊΒΡΠΎΠ², ΠΊΠΎΒΡΠΎΒΡΡΠ΅ ΠΎΠ±ΡΡΒΠ½ΠΎ ΠΏΡΠ΅Π΄ΒΠ»Π°ΒΠ³Π°ΒΡΡ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΈΠ·ΡΒΡΠ°ΒΠ΅Ρ Python.
Π§ΡΠΎ Π½ΡΠΆΒΠ½ΠΎ, ΡΡΠΎΒΠ±Ρ Π²ΡΒΡΡΠΈΡΡ Python
ΠΠ·Β ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΎΒΠ³ΠΎ Π°ΠΏΒΠΏΠ°ΒΡΠ°ΒΡΠ° ΠΊΡΠΎΒΠΌΠ΅ Π±Π°ΒΠ·ΠΎΒΠ²ΠΎΠΉ Π°ΡΠΈΡΒΠΌΠ΅ΒΡΠΈΒΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡ Π½ΠΈΒΡΠ΅ΒΠ³ΠΎ Π½Π΅Β Π½ΡΠΆΒΠ½ΠΎ. Π§ΡΠΎΒΠ±Ρ ΠΏΡΠΈΒΠ΄ΡΒΠΌΠ°ΡΡ, ΠΊΠ°ΒΠΊΠΎΠΉ Π°Π»ΒΠ³ΠΎΒΡΠΈΡΠΌ ΠΈΡΒΠΏΠΎΠ»ΡΒΠ·ΠΎΒΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΡ ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π·Π°ΒΠ΄Π°ΒΡΠΈ, Π²Π°ΠΆΒΠ½ΠΎ ΡΡΡΡΠΊΒΡΡΡΒΠ½ΠΎΠ΅ ΠΌΡΡΒΠ»Π΅ΒΠ½ΠΈΠ΅Β β Π½ΠΎΒ ΡΡΠΎ Π½Π΅Β ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠ°Ρ ΠΊΠΎΠΌΒΠΏΠ΅ΒΡΠ΅Π½ΒΡΠΈΡ. ΠΠ°ΒΡΠ°ΒΠ΄ΠΎΠΊΡ Π²Β ΡΠΎΠΌ, ΡΡΠΎ ΠΈΒ ΡΠ°Π·ΒΠ²ΠΈΒΠ²Π°ΡΡ Π΅Π³ΠΎ Π½ΡΠΆΒΠ½ΠΎ ΡΒ ΠΏΠΎΒΠΌΠΎΒΡΡΡ ΡΠ΅ΒΠ³ΡΒΠ»ΡΡΒΠ½ΠΎΠΉ ΡΠ°ΒΠ±ΠΎΒΡΡ ΡΒ Π·Π°ΒΠ΄Π°ΒΡΠ°ΒΠΌΠΈΒ β Π²Π°ΠΆΒΠ½ΠΎ Π±ΡΡΡ Π³ΠΎΒΡΠΎΒΠ²ΡΠΌ ΠΏΡΠΎΒΡΠΈΒΠ΄Π΅ΡΡ Π½Π°Π΄, ΠΊΠ°ΒΠ·Π°ΒΠ»ΠΎΡΡΒ Π±Ρ, ΡΡΠΈΒΠ²ΠΈΒΠ°Π»ΡΒΠ½ΡΠΌ Π·Π°ΒΠ΄Π°ΒΠ½ΠΈΒΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΒΠΊΠΎ ΡΠ°ΒΡΠΎΠ² ΠΈΒ Π½Π΅Β ΠΎΡΒΡΠ°ΒΡΡΡΒΡΡ.
ΠΠ»Ρ Π°Π½Π°ΒΠ»ΠΈΒΠ·Π° Π΄Π°Π½ΒΠ½ΡΡ , ΠΏΠΎΒΠΌΠΈΒΠΌΠΎ ΡΠΊΠΎΠ»ΡΒΠ½ΠΎΠΉ ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΠΊΠΈ, ΠΏΠΎΒΠ½Π°ΒΠ΄ΠΎΒΠ±ΡΡΒΡΡ Π·Π½Π°ΒΠ½ΠΈΡ ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΡΠ΅ΒΡΠΊΠΎΠΉ ΡΡΠ°ΒΡΠΈΒΡΡΠΈΒΠΊΠΈ ΠΈΒ ΡΠ΅ΠΎΒΡΠΈΠΈ Π²Π΅ΒΡΠΎΒΡΡΒΠ½ΠΎΒΡΡΠΈ. ΠΠ°ΒΡΠΈΒΠ½Π°ΒΡΒΡΠ΅ΒΠΌΡ ΡΠΏΠ΅ΒΡΠΈΒΠ°ΒΠ»ΠΈΒΡΡΡ Π²Π°ΠΆΒΠ½Π΅Π΅ Π²ΡΠ΅ΒΠ³ΠΎ ΠΎΡΠ²ΠΎΒΠΈΡΡ Π±Π°ΒΠ·ΠΎΒΠ²ΡΠ΅ ΠΏΠΎΒΠ½ΡΒΡΠΈΡ: ΡΠΌΠ΅ΡΡ ΠΏΡΠΎΒΠ²Π΅ΒΡΡΡΡ Π³ΠΈΒΠΏΠΎΒΡΠ΅ΒΠ·Ρ, Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΠ°ΒΠΊΠΎΠ΅ Π΄ΠΎΒΠ²Π΅ΒΡΠΈΒΡΠ΅Π»ΡΒΠ½ΡΠ΅ ΠΈΠ½ΒΡΠ΅ΡΒΠ²Π°ΒΠ»Ρ, ΡΠ΅ΠΌ ΠΎΡΒΠ»ΠΈΒΡΠ°ΒΡΡΒΡΡ ΠΌΠ΅ΒΠ΄ΠΈΒΠ°ΒΠ½Π° ΠΈΒ ΠΌΠΎΠ΄Π°, ΠΏΠΎΒΠ½ΠΈΒΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΒΠ·Π½Π°ΒΡΠ°ΡΡ ΡΠΎΒΠ±ΡΒΡΠΈΡ ΠΈΒ ΠΈΡ Β Π²Π΅ΒΡΠΎΒΡΡΒΠ½ΠΎΒΡΡΠΈ.
ΠΠ°ΒΡΠ΅ΒΡΠΈΒΠ°ΒΠ»Ρ ΠΏΠΎΒ ΠΌΠ°ΒΡΠ΅ΒΠΌΠ°ΒΡΠΈΒΠΊΠ΅:
Π’Π΅ΠΌ, ΠΊΡΠΎ Ρ ΠΎΒΡΠ΅Ρ Π·Π°ΒΠ½ΠΈΒΠΌΠ°ΡΡΒΡΡ Π°Π½Π°ΒΠ»ΠΈΒΠ·ΠΎΠΌ Π΄Π°Π½ΒΠ½ΡΡ (ΠΊΠ°ΠΊ ΠΏΡΠΎΒΡΠ΅ΡΒΡΠΈΒΠΎΒΠ½Π°Π»ΡΒΠ½ΠΎ, ΡΠ°ΠΊ ΠΈΒ Π΄Π»Ρ ΡΠ΅Π±Ρ), Π²Π°ΠΆΒΠ½ΠΎ ΡΠ°Π·ΒΠ²ΠΈΡΡ ΠΊΡΠΈΒΡΠΈΒΡΠ΅ΒΡΠΊΠΎΠ΅ ΠΌΡΡΒΠ»Π΅ΒΠ½ΠΈΠ΅. ΠΠ°ΒΠΏΡΠΈΒΠΌΠ΅Ρ, Π½ΡΠΆΒΠ½ΠΎ ΡΠ°ΒΠΌΠΎΒΠΌΡ Π²ΡΒΠ΄Π΅ΒΠ»ΡΡΡ ΠΊΡΠΈΒΡΠ΅ΒΡΠΈΠΈ Π΄Π»Ρ ΡΡΠ°Π²ΒΠ½Π΅ΒΠ½ΠΈΡ ΠΎΠ±ΡΒΠ΅ΠΊΒΡΠΎΠ²: ΡΡΡ Π½Π΅Ρ ΠΊΠ°ΒΠΊΠΎΒΠ³ΠΎ-ΡΠΎ ΡΡΠ°Π½ΒΠ΄Π°ΡΡΒΠ½ΠΎΒΠ³ΠΎ ΡΠ΅ΒΡΠ΅ΒΠ½ΠΈΡ. ΠΡΡ Π²Π°ΠΆΒΠ½ΠΎ ΡΡ ΠΎΒΠ΄Ρ Π²ΠΈΒΠ΄Π΅ΡΡ Π·Π°ΒΠΊΠΎΒΠ½ΠΎΒΠΌΠ΅ΡΒΠ½ΠΎΒΡΡΠΈ ΠΈΒ Π°Π½ΠΎΒΠΌΠ°ΒΠ»ΠΈΠΈ Π²Β Π΄Π°Π½ΒΠ½ΡΡ .
ΠΠ·ΡΒΡΠ°ΡΡ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΠ΅ ΠΈΒ Π°Π½Π°ΒΠ»ΠΈΠ· Π΄Π°Π½ΒΠ½ΡΡ ΠΌΠΎΠΆΒΠ½ΠΎ ΠΈΒ ΡΠ°ΒΠΌΠΎΒΠΌΡΒ β ΡΒ Π½Π΅Β ΡΠ΅ΒΠΊΠΎΒΠΌΠ΅Π½ΒΠ΄ΡΡ ΠΎΠ±ΒΡΠ°ΒΡΠ°ΡΡΒΡΡ ΠΊΒ ΠΏΠ»Π°ΡΒΠ½ΡΠΌ ΠΊΡΡΒΡΠ°ΠΌ Π΄ΠΎΒ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²ΡΒ Π½Π΅Β ΠΏΠΎΒΡΠΌΠΎΡΒΡΠ΅ΒΠ»ΠΈ Π±Π΅ΡΒΠΏΠ»Π°ΡΒΠ½ΡΠΉ ΠΊΠΎΠ½ΒΡΠ΅Π½Ρ.
ΠΠΎ-ΠΏΠ΅ΡΒΠ²ΡΡ , ΠΎΠ½Β ΡΠ»ΡΒΠΆΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΎΡΠΈΒΠ΅Π½ΒΡΠ°ΒΡΠΈΠΈ: ΡΡΠΎΒΠ±Ρ Π»ΡΡΒΡΠ΅ ΠΏΠΎΒΠ½ΡΡΡ, ΠΊΠ°ΒΠΊΠΈΠ΅ ΠΏΡΠΈΒΠ»ΠΎΒΠΆΠ΅ΒΠ½ΠΈΡ Π΅ΡΡΡ ΡΒ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡ ΠΈΠ»ΠΈ Π°Π½Π°ΒΠ»ΠΈΒΠ·Π° Π΄Π°Π½ΒΠ½ΡΡ Π΄Π»Ρ ΡΠ°Π·ΒΠ½ΡΡ ΠΏΡΠΎΒΡΠ΅ΡΒΡΠΈΠΉ. ΠΠΎ-Π²ΡΠΎΒΡΡΡ , Π΄Π°ΡΡ ΠΏΠΎΒΠ½ΡΡΡ, ΡΠΊΠΎΠ»ΡΒΠΊΠΎ ΡΠΈΠ» ΠΈΒ Π²ΡΠ΅ΒΠΌΠ΅ΒΠ½ΠΈ Π½ΡΠΆΒΠ½ΠΎ Π±ΡΒΠ΄Π΅Ρ ΠΏΡΠΈΒΠΊΠ»Π°ΒΠ΄ΡΒΠ²Π°ΡΡ Π΄Π»Ρ ΠΈΠ·ΡΒΡΠ΅ΒΠ½ΠΈΡ.
ΠΡΠ΅ΒΠΈΠΌΡΒΡΠ΅ΒΡΡΠ²Π° ΠΎΠ±ΡΒΡΠ΅ΒΠ½ΠΈΡ Π½Π°Β ΠΊΡΡΒΡΠ°Ρ Π²Β ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Β Π½ΠΈΡ ΠΌΠΎΠΆΒΠ½ΠΎ ΠΏΠΎΒΠ»ΡΒΡΠΈΡΡ ΡΡΡΒΠΊΠΎ ΡΡΠΎΡΒΠΌΡΒΠ»ΠΈΒΡΠΎΒΠ²Π°Π½ΒΠ½ΡΠ΅ ΠΏΡΠ°ΠΊΒΡΠΈΒΡΠ΅ΒΡΠΊΠΈΠ΅ Π·Π°ΒΠ΄Π°ΒΡΠΈ. Π’Π°ΠΊΒΠΆΠ΅ ΠΏΡΠ΅ΒΠΏΠΎΒΠ΄Π°ΒΠ²Π°ΒΡΠ΅ΒΠ»ΠΈ ΠΌΠΎΒΠ³ΡΡ ΡΠ°ΡΒΡΠΊΠ°ΒΠ·Π°ΡΡ ΠΎΒ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΒΡΠ°ΡΡΒΡΡ ΡΒ Π·Π°ΒΠΊΠ°Π·ΒΡΠΈΒΠΊΠΎΠΌ ΠΈΒ ΡΡΠΎΡΒΠ½ΡΡΡ ΡΒ Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±ΒΡ ΠΎΒΠ΄ΠΈΒΠΌΡΡ ΠΈΠ½ΒΡΠΎΡΒΠΌΠ°ΒΡΠΈΡ.
Β©
Fatos Bytyqi / Unsplash
ΠΠ°ΠΊ Π²ΡΒΠ±ΡΠ°ΡΡ ΠΎΠ±ΒΡΠ°ΒΠ·ΠΎΒΠ²Π°ΒΡΠ΅Π»ΡΒΠ½ΡΡ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΡ
ΠΡΒΠ±ΠΈΒΡΠ°Ρ ΠΎΠ±ΒΡΠ°ΒΠ·ΠΎΒΠ²Π°ΒΡΠ΅Π»ΡΒΠ½ΡΡ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΡ, Π²Π°ΠΆΒΠ½ΠΎ ΠΎΠ±ΒΡΠ°ΒΡΠΈΡΡ Π²Π½ΠΈΒΠΌΠ°ΒΠ½ΠΈΠ΅ Π½Π°Β ΠΏΡΠ΅ΒΠΏΠΎΒΠ΄Π°ΒΠ²Π°ΒΡΠ΅ΒΠ»Π΅ΠΉ, ΠΊΠΎΒΡΠΎΒΡΡΠ΅ Π΅Π³ΠΎ Π²Π΅ΒΠ΄ΡΡ ΠΈΠ»ΠΈ ΡΠΎΒΠ·Π΄Π°ΒΠ²Π°ΒΠ»ΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΊΠΎΠ½ΒΡΠ΅Π½Ρ,Β β ΠΌΠΎΠΆΒΠ½ΠΎ ΠΏΠΎΒΡΠΌΠΎΡΒΡΠ΅ΡΡ ΠΈΡ Β ΠΏΡΠΎΒΡΠΈΒΠ»ΠΈ Π½Π°Β FaceΒbook ΠΈΒ ΡΠ·Π½Π°ΡΡ ΠΏΡΠΎ ΠΏΡΠΎΒΡΠ΅ΡΒΡΠΈΒΠΎΒΠ½Π°Π»ΡΒΠ½ΡΠΉ ΠΎΠΏΡΡ.
Π§ΡΠΎ ΠΊΠ°ΒΡΠ°ΒΠ΅ΡΒΡΡ ΡΠ΅Π½Ρ, ΡΠΎΒ ΠΏΠΎΒ ΠΌΠΎΒΠ΅ΒΠΌΡ ΠΎΠΏΡΒΡΡ, ΠΊΠ°ΒΡΠ΅ΒΡΡΠ²ΠΎ ΠΊΡΡΒΡΠ° Π½Π΅Β Π²ΡΠ΅ΒΠ³Π΄Π° ΡΒ Π½Π΅ΠΉ ΠΊΠΎΡΒΡΠ΅ΒΠ»ΠΈΒΡΡΒΠ΅ΡΒ β ΠΏΠΎΒΡΡΠΎΒΠΌΡ ΠΎΡΠΈΒΠ΅Π½ΒΡΠΈΒΡΠΎΒΠ²Π°ΡΡΒΡΡ Π½ΡΠΆΒΠ½ΠΎ Π½Π°Β ΡΠΎ, ΡΠΊΠΎΠ»ΡΒΠΊΠΎ Π²Π°ΠΌ ΠΊΠΎΠΌΒΡΠΎΡΡΒΠ½ΠΎ ΠΏΠΎΒΡΡΠ°ΒΡΠΈΡΡ Π½Π°Β ΠΎΠ±ΡΒΡΠ΅ΒΠ½ΠΈΠ΅.
Π’Π°ΠΊΒΠΆΠ΅ ΡΡΠΎΒΠΈΡ ΡΡΡΒΠΊΠΎ ΡΡΠΎΡΒΠΌΡΒΠ»ΠΈΒΡΠΎΒΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Ρ ΠΎΒΡΠ΅ΡΒΡΡ ΠΏΠΎΒΠ»ΡΒΡΠΈΡΡ Π²Β ΡΠ΅ΒΠ·ΡΠ»ΡΒΡΠ°ΒΡΠ΅,Β β ΠΈΒ ΡΠ΄Π΅ΒΠ»Π°ΡΡ ΡΡΠΎ ΠΊΠ»ΡΒΡΠ΅ΒΠ²ΡΠΌ ΠΊΡΠΈΒΡΠ΅ΒΡΠΈΒΠ΅ΠΌ Π΄Π»Ρ Π²ΡΒΠ±ΠΎΒΡΠ°. ΠΡΒΠ²Π°ΒΡΡ ΡΠ»ΡΒΡΠ°ΠΈ, ΠΊΠΎΒΠ³Π΄Π° ΡΡΡΒΠ΄Π΅Π½ΒΡΡ ΠΏΡΠΈΒΡ ΠΎΒΠ΄ΡΡ Π½Π°Β ΠΊΡΡΡ ΠΏΠΎΒ Π°Π½Π°ΒΠ»ΠΈΒΠ·Ρ Π΄Π°Π½ΒΠ½ΡΡ Π΄Π»Ρ ΠΌΠ΅ΒΠ½Π΅ΒΠ΄ΠΆΠ΅ΒΡΠΎΠ² ΠΈΒ ΠΎΠΆΠΈΒΠ΄Π°ΒΡΡ Π·Π°ΒΠ½ΡΒΡΠΈΡ ΠΏΠΎΒ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡΒ β Π°Β ΠΈΡ Β ΡΡΠ°Ρ ΠΎΠ±ΒΡΠ°ΡΡΒΡΡ ΡΒ Π°Π½Π°ΒΠ»ΠΈΒΡΠΈΒΠΊΠ°ΒΠΌΠΈ ΠΈΒ ΡΠ°ΡΒΡΠΊΠ°ΒΠ·ΡΒΠ²Π°ΒΡΡ ΠΎΠ±ΒΡΠΈΠ΅ Π²Π΅ΡΠΈ ΠΏΡΠΎ ΡΠΎ, ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΒΡΡΡΡ Π°Π½Π°ΒΠ»ΠΈΠ· Π΄Π°Π½ΒΠ½ΡΡ . ΠΠ°ΒΡΠ°ΒΡΡΡΡ ΠΏΡΠΎΒΠ±Π»Π΅ΒΠΌΠ° Π½Π΅Β Π²Β ΠΏΠ»ΠΎΒΡ ΠΎΠΉ ΠΎΡΒΠ³Π°ΒΠ½ΠΈΒΠ·Π°ΒΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΒΠΏΠΎΒΠ΄Π°ΒΠ²Π°ΒΡΠ΅ΒΠ»ΡΡ , Π°Β Π²Β ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΒΠ»ΠΎΒΠ²Π΅ΠΊ ΡΠ°ΠΌ Π½Π΅Β ΠΏΡΠΎΒΠ²Π΅ΒΡΠΈΠ», ΡΠΎΒΠΎΡΒΠ²Π΅ΡΒΡΡΠ²ΡΒΠ΅ΡΒ Π»ΠΈ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠ° Π΅Π³ΠΎ Π·Π°ΒΠ΄Π°ΒΡΠ°ΠΌ. ΠΡΠ°ΒΠ²ΠΈΒΠ»ΠΎ ΡΒ ΠΏΠΎΒΡΡΠ°ΒΠ½ΠΎΠ²ΒΠΊΠΎΠΉ ΡΠ΅ΒΠ»Π΅ΠΉ ΡΠ°ΒΠ±ΠΎΒΡΠ°ΒΠ΅Ρ Π½Π΅Β ΡΠΎΠ»ΡΒΠΊΠΎ Π½Π°Β Π²ΡΒΠ±ΠΎΡ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΡ, Π½ΠΎΒ ΠΈΒ Π½Π°Β ΠΎΠ±ΡΒΡΠ΅ΒΠ½ΠΈΠ΅ Π²Β ΡΠ΅ΒΠ»ΠΎΠΌΒ β Π½Π΅Β ΡΡΠΎΒΠΈΡ ΠΎΡΠ²Π°ΒΠΈΒΠ²Π°ΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΒΠ³ΡΠ°ΠΌΒΠΌΠΈΒΡΠΎΒΠ²Π°ΒΠ½ΠΈΡ, ΡΡΠΎΒΠ±Ρ ΠΏΠΎΒΡΡΠ°ΒΠ²ΠΈΡΡ Π³Π°ΒΠ»ΠΎΡΒΠΊΡ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Python 3, Π΄ΠΎΡΡΠΎΠΉΠ½ΡΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ / RUVDS.com corporate blog / Habr
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π°ΡΠ°Π»ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΡΠΎ Π²ΡΠΎΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python Π½Π° ΡΡΠ΅ΡΡΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΊΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Python 2 Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°. ΠΠ²ΡΠΎΡ ΡΡΠ°ΡΡΠΈ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ, ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΎΠ±ΡΡΠΌ Python 3-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΠΌΡ Π΄ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π²ΠΈΠ΄Π΅ΡΡ, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΡΠΎ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Python 2. ΠΠΎ Π΅Π³ΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ, ΠΎΠ½ ΠΈ ΡΠ°ΠΌ Π³ΡΠ΅ΡΠΈΡ ΡΠ΅ΠΌ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ. ΠΠ΄Π΅ΡΡ ΠΎΠ½ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π»ΠΈΡΡ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Python 3. ΠΠ½ Π½Π°Π΄Π΅Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°Ρ ΠΆΠΈΠ·Π½Ρ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΎ Π½ΠΈΡ ΡΠ·Π½Π°Π΅Ρ.ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠ΅ Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅, Π½Π°ΠΏΠΈΡΠ°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python 3.7. Π ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π΄Π»Ρ Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ.
Π€ΠΎΡΠΌΠ°ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ (3.6+)
ΠΠ΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½ΡΠΆΠ½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. Π’Π°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ, Π½Π΅ ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄ΡΡΠ΅Π²Π½ΠΎΠ³ΠΎ ΡΠ°Π²Π½ΠΎΠ²Π΅ΡΠΈΡ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Python-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ
format
:user = "Jane Doe"
action = "buy"
log_message = 'User {} has logged in and did an action {}.'.format(
Β user,
Β action
)
print(log_message)
# User Jane Doe has logged in and did an action buy.
Python 3, Π½Π°ΡΡΠ΄Ρ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ
format
, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ (f-strings, f-ΡΡΡΠΎΠΊΠΈ). ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠΌΠ°ΡΠ½ΡΡ
ΡΡΡΠΎΠΊ:user = "Jane Doe" action = "buy" log_message = f'User {user} has logged in and did an action {action}.' print(log_message) # User Jane Doe has logged in and did an action buy.
ΠΠΎΠ΄ΡΠ»Ρ pathlib (3.4+)
Π€ΠΎΡΠΌΠ°ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ β Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π²ΡΠΎΠ΄Π΅ ΠΏΡΡΠ΅ΠΉ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ, ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ Π½ΠΈΠΌΠΈ. Π Python 3 ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ pathlib, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΄ΠΎΠ±Π½ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΡΡΠΌΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΡ Π·Π°Π΄Π°Ρ β Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΡΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π».
from pathlib import Path
root = Path('post_sub_folder')
print(root)
# post_sub_folder
path = root / 'happy_user'
# ΠΠ΅Π»Π°Π΅ΠΌ ΠΏΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΌ
print(path.resolve())
# /home/weenkus/Workspace/Projects/DataWhatNow-Codes/how_your_python3_should_look_like/post_sub_folder/happy_user
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² (3.5+)
Π§ΡΠΎ Π»ΡΡΡΠ΅ β ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ? ΠΠΎΠΆΠ°Π»ΡΠΉ, ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π½Π΅ΠΏΡΠΎΡΡΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ. Π― ΠΎΡΡΠ°Π²Π»ΡΡ Π½Π° ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΡΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΡ Π±Ρ Π·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Python 3 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ².
def sentence_has_animal(sentence: str) -> bool:
Β return "animal" in sentence
sentence_has_animal("Donald had a farm without animals")
# True
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ (3.4+)
Python 3 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠ»Π°ΡΡΡ
Enum
, ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΠΎ ΡΠ°Π·Π±ΡΠΎΡΠ°Π½Π½ΡΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅.from enum import Enum, auto
class Monster(Enum):
Β Β Β ZOMBIE = auto()
Β Β Β WARRIOR = auto()
Β Β Β BEAR = auto()
Β Β Β
print(Monster.ZOMBIE)
# Monster.ZOMBIE
ΠΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Python 3 ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠΌΡΠ½ (ΡΠ»Π΅Π½ΠΎΠ²), ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ. Π§Π»Π΅Π½Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ.
for monster in Monster: Β Β Β print(monster) # Monster.ZOMBIE # Monster.WARRIOR # Monster.BEAR
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠΉ LRU-ΠΊΡΡ (3.2+)
Π Π½Π°ΡΠΈ Π΄Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . Python 3 Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ lru_cache, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ LRU-ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Least Recently Used).
ΠΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠΈΡΠ»Π° Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Π° ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² Ρ ΠΎΠ΄Π΅ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
import time
def fib(number: int) -> int:
Β Β Β if number == 0: return 0
Β Β Β if number == 1: return 1
Β Β Β
Β Β Β return fib(number-1) + fib(number-2)
start = time.time()
fib(40)
print(f'Duration: {time.time() - start}s')
# Duration: 30.684099674224854s
Π’Π΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
lru_cache
Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΠ°ΠΊΠ°Ρ ΡΠ΅Ρ
Π½ΠΈΠΊΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°ΡΠΈΠ΅ΠΉ). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°Π½ΡΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΡΠ»ΠΎΡΡ ΡΠ΅ΠΊΡΠ½Π΄Π°ΠΌΠΈ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°ΠΌΠΈ. from functools import lru_cache
@lru_cache(maxsize=512)
def fib_memoization(number: int) -> int:
Β Β Β if number == 0: return 0
Β Β Β if number == 1: return 1
Β Β Β
Β Β Β return fib_memoization(number-1) + fib_memoization(number-2)
start = time.time()
fib_memoization(40)
print(f'Duration: {time.time() - start}s')
# Duration: 6.866455078125e-05s
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (3.0+)
ΠΡΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°Π²ΡΡ Π·Π²ΡΠ·Π΄ΠΎΡΠΊΡ. Π ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΡΡ ΡΠΎ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π»ΠΎ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. Π’Π°ΠΊ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
head
ΠΈ tail
ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ range(5)
. Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ body
ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΡΡ ΡΠΎ, ΡΡΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.head, *body, tail = range(5) print(head, body, tail) # 0 [1, 2, 3] 4 py, filename, *cmds = "python3.7 script.py -n 5 -l 15".split() print(py) print(filename) print(cmds) # python3.7 # script.py # ['-n', '5', '-l', '15'] first, _, third, *_ = range(10) print(first, third) # 0 2
ΠΠ»Π°ΡΡΡ Π΄Π°Π½Π½ΡΡ (3.7+)
Π Python 3 ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΊΠ»Π°ΡΡΡ Π΄Π°Π½Π½ΡΡ (data classes). ΠΠ½ΠΈ Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΌΠ° ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ
dataclass
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ __init__()
ΠΈ __repr__()
. Π ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΊΠ°ΠΊ Β«ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ». ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° dataclass
:class Armor:
Β Β Β
Β Β Β def __init__(self, armor: float, description: str, level: int = 1):
Β Β Β Β Β Β Β self.armor = armor
Β Β Β Β Β Β Β self.level = level
Β Β Β Β Β Β Β self.description = description
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β
Β Β Β def power(self) -> float:
Β Β Β Β Β Β Β return self.armor * self.level
Β Β Β
armor = Armor(5.2, "Common armor.", 2)
armor.power()
# 10.4
print(armor)
# <__main__.Armor object at 0x7fc4800e2cf8>
ΠΠΎΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π½ΠΎ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ
dataclass
:from dataclasses import dataclass
@dataclass
class Armor:
Β Β Β armor: float
Β Β Β description: str
Β Β Β level: int = 1
Β Β Β
Β Β Β def power(self) -> float:
Β Β Β Β Β Β Β return self.armor * self.level
Β Β Β
armor = Armor(5.2, "Common armor.", 2)
armor.power()
# 10.4
print(armor)
# Armor(armor=5.2, description='Common armor.', level=2)
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ°ΠΏΠΎΠΊ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π±Π΅Π· ΡΠ°ΠΉΠ»Π° __init__.py (3.3+)
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python-ΠΊΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ , Π² ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΠ°ΠΉΠ»
__init__.py
). ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:sound/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠ°ΠΊΠ΅Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Β Β Β Β Β __init__.py Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° sound Β Β Β Β Β formats/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ² Β Β Β Β Β Β Β Β Β Β Β Β Β __init__.py Β Β Β Β Β Β Β Β Β Β Β Β Β wavread.py Β Β Β Β Β Β Β Β Β Β Β Β Β wavwrite.py Β Β Β Β Β Β Β Β Β Β Β Β Β aiffread.py Β Β Β Β Β Β Β Β Β Β Β Β Β aiffwrite.py Β Β Β Β Β Β Β Β Β Β Β Β Β auread.py Β Β Β Β Β Β Β Β Β Β Β Β Β auwrite.py Β Β Β Β Β Β Β Β Β Β Β Β Β ... Β Β Β Β Β effects/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Π·Π²ΡΠΊΠΎΠ²ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² Β Β Β Β Β Β Β Β Β Β Β Β Β __init__.py Β Β Β Β Β Β Β Β Β Β Β Β Β echo.py Β Β Β Β Β Β Β Β Β Β Β Β Β surround.py Β Β Β Β Β Β Β Β Β Β Β Β Β reverse.py Β Β Β Β Β Β Β Β Β Β Β Β Β ... Β Β Β Β Β filters/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠΎΠ² Β Β Β Β Β Β Β Β Β Β Β Β Β __init__.py Β Β Β Β Β Β Β Β Β Β Β Β Β equalizer.py Β Β Β Β Β Β Β Β Β Β Β Β Β vocoder.py Β Β Β Β Β Β Β Β Β Β Β Β Β karaoke.py Β Β Β Β Β Β Β Β Β Β Β Β Β ...
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Python 2 Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» Π±ΡΡΡ ΡΠ°ΠΉΠ»
__init__.py
. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ ΠΏΠ°ΠΏΠΊΠ° Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Python-ΠΏΠ°ΠΊΠ΅ΡΠ°. Π Python 3, Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Implicit Namespace Packages, Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ
ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ.sound/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠ°ΠΊΠ΅Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ
Β Β Β Β Β __init__.py Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° sound
Β Β Β Β Β formats/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²
Β Β Β Β Β Β Β Β Β Β Β Β Β wavread.py
Β Β Β Β Β Β Β Β Β Β Β Β Β wavwrite.py
Β Β Β Β Β Β Β Β Β Β Β Β Β aiffread.py
Β Β Β Β Β Β Β Β Β Β Β Β Β aiffwrite.py
Β Β Β Β Β Β Β Β Β Β Β Β Β auread.py
Β Β Β Β Β Β Β Β Β Β Β Β Β auwrite.py
Β Β Β Β Β Β Β Β Β Β Β Β Β ...
Β Β Β Β Β effects/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Π·Π²ΡΠΊΠΎΠ²ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ²
Β Β Β Β Β Β Β Β Β Β Β Β Β echo.py
Β Β Β Β Β Β Β Β Β Β Β Β Β surround.py
Β Β Β Β Β Β Β Β Β Β Β Β Β reverse.py
Β Β Β Β Β Β Β Β Β Β Β Β Β ...
Β Β Β Β Β filters/ Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ΠΠΎΠ΄ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠΎΠ²
Β Β Β Β Β Β Β Β Β Β Β Β Β equalizer.py
Β Β Β Β Β Β Β Β Β Β Β Β Β vocoder.py
Β Β Β Β Β Β Β Β Β Β Β Β Β karaoke.py
Β Β Β Β Β Β Β Β Β Β Β Β Β ...
ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΡΡ Π½Π΅ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ, ΡΠ°ΠΉΠ»
__init__.py
Π²ΡΡ Π΅ΡΡ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠ±ΡΠ°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ, ΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.ΠΡΠΎΠ³ΠΈ
Π ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Python 3, Π½ΠΎ ΠΌΡ Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ Π²Ρ Π½Π°ΡΠ»ΠΈ Π·Π΄Π΅ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅. ΠΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Ρ Python?
Π£ Π²Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ: Π²Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ ΠΊΡΡΡΡ, ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈΡΠ°Π»ΠΈ ΠΊΠ½ΠΈΠ³Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π±Π°Π·Ρ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Python. ΠΡ ΠΎΡΠ²ΠΎΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΊΠΈ, ΡΠ»ΠΎΠ²Π°ΡΠΈ, ΠΊΠ»Π°ΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ.
ΠΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ Π’ΠΠ ΠΠ½ΠΈΠ³ Π΄Π»Ρ Python ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π±ΡΡΡΡΠΎ ΠΈΠ·ΡΡΠΈΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠ½ΠΈΠ³: ΠΠ½ΠΈΠ³ΠΈ ΠΏΠΎ PythonΠ ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅?
Python β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ ΠΏΠ»Π΅ΡΠ΄ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²ΠΎ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΡΠ΅ΡΠ°Ρ . ΠΡΠ»ΠΈ Π²Ρ ΠΎΡΠ²ΠΎΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ Python, ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π½Π° Π½Π΅ΠΌ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ β Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅:
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π² Python.
Π§ΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π΅Π»Π°ΡΡ Π² Python?
ΠΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ Π»ΡΠ΄ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π² Python Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ? ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, Π΄Π°Π²Π°ΠΉΡΠ΅ Π±ΡΡΡΡΠ΅Π½ΡΠΊΠΎ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ ΠΊΡΡΠΏΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ.
Google, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Python Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°, ΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π²Π΅Π΄ΡΡΠΈΡ Π³ΠΈΠ³Π°Π½ΡΠΎΠ² ΡΡΠ΅Π΄ΠΈ ΡΠ·ΡΠΊΠΎΠ², ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ. ΠΠ²ΠΈΠ΄ΠΎ Π²Π°Π½ Π ΠΎΡΡΡΠΌ, Π΄ΠΎΠ±ΡΡΠΉ ΠΏΠΎΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ Π΄ΠΈΠΊΡΠ°ΡΠΎΡ Python (ΡΠΆΠ΅ Π½Π΅Ρ) Π΄Π°ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°ΠΌ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π»Π΅Ρ, Π½Π°Π±Π»ΡΠ΄Π°Ρ Π·Π° ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ·ΡΠΊ.
Π Instagram Π»ΡΠ±ΡΡ Python Π·Π° Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎΡΡ. Π‘Π΅ΡΠ²ΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Β«ΡΠ°ΠΌΡΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Django, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° PythonΒ».
Spotify ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ·ΡΠΊ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ ΠΈ Π±ΡΠΊΠ΅Π½Π΄Π°. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΌΠΎΠ»Π½ΠΈΠ΅Π½ΠΎΡΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Spotify Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠ½Π½Ρ Π°Π½Π°Π»ΠΈΠ·ΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΡΠ°ΠΊ ΡΡΠΎ ΠΈΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°ΠΊΡΡ ΡΠ°Π±ΠΎΡΡ Π±ΡΡΡΡΠΎ. Python β ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅!
Π§ΡΠΎ Ρ ΠΌΠΎΠ³Ρ Π΄Π΅Π»Π°ΡΡ Π² Python?
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π°ΡΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΌΠ°ΡΠΈΠ½Π½ΡΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ ΠΏΡ., ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Python Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π³ΡΠ°Π½ΠΈΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠ°Π·Π²ΠΈΡΡ Π²Π°ΡΠΈ Π½Π°Π²ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Python.
#1: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½ΡΠ΄Π½ΡΡ Π΄Π΅Π»
ΠΡΠΎ ΡΠ΅ΡΡΡΡ ΠΏΠΎ Β«ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Β». ΠΠ°ΠΊ ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅, Ρ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΡΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡ, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΠΎΡΠΏΡΠ°Π²Π½Π°Ρ ΡΠΎΡΠΊΠ° Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠΆΠ΅ ΠΎΡΠ²ΠΎΠΈΠ» ΠΎΡΠ½ΠΎΠ²Ρ Python.
Π£ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π½Ρ ΠΏΠΎΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ Π²ΡΡΡΠΈΠ»ΠΈ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠ»ΠΎΠ²Π°ΡΠΈ, ΠΏΡΠΎΠ²ΠΎΠ΄Ρ ΡΠΊΡΠ΅ΠΉΠΏΠΈΠ½Π³ ΡΠ°ΠΉΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°Ρ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΠΊΠ»Π°ΡΡΡ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΠ΅ΡΡ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ Π΄Π°Π΄ΡΡ Π²Π°ΠΌ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ.
#2: ΠΠ΅ΡΠΆΠ°ΡΡ ΡΡΠΊΡ Π½Π° ΠΊΡΡΡΠ΅ ΠΠΈΡΠΊΠΎΠΈΠ½Π°
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΎ Bitcoin Python Π³ΠΎΠ²ΠΎΡΡΡ Π²ΡΠ΅. Π‘ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΊΠ°ΠΊ Π² Π΄Π΅ΠΊΠ°Π±ΡΠ΅ 2017, ΠΊΠΎΠ³Π΄Π° ΠΊΡΡΡ ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ΄Π½ΡΠ»ΡΡ Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΊΠΈ Π² 20Β 000 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ², ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠ° ΡΡΠ°Π»Π° Π½Π° ΡΠ»ΡΡ Ρ Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ². Π¦Π΅Π½Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΊΠΎΠ»Π΅Π±Π°ΡΡΡΡ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΈΡΠ°ΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΈ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΠΎΠ³Π°ΡΠΈΡΡΡΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ Π·ΠΎΠ»ΠΎΡΠ΅ ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π·Π½Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³, ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π»ΡΡΡΠΈΡ ΡΠ΅Π½Π°Ρ Π½Π° bitcoin. ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΡΠΈΡΡ Π²Π°Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°Π²ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Π² Python, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΊΡΡΡΠ΅ Bitcoin.
ΠΡΠ½ΠΎΠ²Π° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° β ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ IFTTT (if this, then that) Π°ΠΏΠΏΠ»Π΅ΡΠΎΠ². ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ requests Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² HTTP ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ webhook Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ.
ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ β ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΠΎΡΠΏΡΠ°Π²Π½Π°Ρ ΡΠΎΡΠΊΠ° Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ Π² ΠΊΡΠΈΠΏΡΠ΅. Π‘Π΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π°Π»ΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅ Ethereum β Π΄Π²Π΅ΡΠΈ ΠΎΡΠΊΡΡΡΡ!
#3: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°
ΠΡΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠ»ΡΠ· Π² ΠΌΠΈΡΠ΅ GUI ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² β ΡΡΠΎ Π²Π°ΠΆΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΠΎ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅, ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ β ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π°Ρ Π²Π°ΠΆΠ½ΠΎΡΡΡ.
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ UX\UI Π΄ΠΈΠ·Π°ΠΉΠ½, ΡΠΎ ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ. ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ tkinter, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Python.
ΠΠΎΠ΄ΡΠ»Ρ tkinter β ΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠ° Π²ΠΎΠΊΡΡΠ³ Tcl/Tk, ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Tcl ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Tk. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Python, ΡΠΎ Ρ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ tkinter. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ:
<span>from</span> <span>tkinter</span> <span>import</span> <span>*</span>
<span>from</span> <span>tkinter</span> <span>import</span> <span>*</span> |
ΠΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΡΡΠΎΠΉΠΊΠΎΠΉ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ GUI ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Π² Python.
ΠΠΎΠΏΡΠ°ΠΊΡΠΈΠΊΡΠΉΡΠ΅ΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ tkinter ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΠΉΡΠ΅ Π·Π° ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²Π°ΡΠ΅ Π²ΠΈΠ΄Π΅Π½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΠΊΡΠ΅ΠΏΠ½Π΅ΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ GUI ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Python. ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ ΠΊ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ GUI ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Python Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
#4: ΠΠ°ΠΉΠ½ΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ Twitter
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ, ΠΈ (Π²ΡΠ΅ ΡΠ°ΡΠ΅ ΠΈ ΡΠ°ΡΠ΅) ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ Π²Π΅ΡΠ΅ΠΉ (IoT) β Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π΄Π°Π½Π½ΡΡ , ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΌΠ΅ΡΡΠ°ΡΡ Π²ΡΠ΅Π³ΠΎ Π΄Π΅ΡΡΡΡ Π»Π΅Ρ Π½Π°Π·Π°Π΄. ΠΠ½Π°Π»ΠΈΡΠΈΠΊΠ° β ΡΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ½Π°Ρ ΡΠ°ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΡΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. Π ΡΠ΅ΠΌ Π»ΡΠ΄ΠΈ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡ? ΠΠ°ΠΊΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ Π²ΠΈΠ΄Π½Ρ Π² ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ?
Π’Π²ΠΈΡΡΠ΅Ρ β ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ²Π΅ΡΡ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ³Π΄Π° ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³ Π΄Π°Π½Π½ΡΡ Π² Twitter β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ Π½Π°Π²ΡΠΊΠΈ Π² Python, ΡΡΠΎΠ±Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ ΠΎΠ± ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΌ ΠΌΠΈΡΠ΅.
Π ΡΡΠ΅Π±Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠ±ΠΈΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρ Π’Π²ΠΈΡΡΠ΅ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π’Π²ΠΈΡΡΠ΅ΡΠ° ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΡΠ΅Π΄Π΅ docker. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π’Π²ΠΈΡΡΠ΅ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²Π°ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΌ API.
ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Tweepy Π΄Π»Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΡΡΠ³ΠΈΠ²Π°ΡΡ, TextBlob Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ²ΠΈΡΠΎΠ², Elasticsearch Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΠΈΡ ΡΠ²ΠΈΡΠΎΠ² ΠΈ Kibana Π΄Π»Ρ ΠΏΠΎΠΊΠ°Π·Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°, Π²Ρ ΡΠΆΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π·Π°Π½ΡΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Python Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ² ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠ΅ΡΠΈ.
#5: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠ±Π»ΠΎΠ³Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Flask
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π΅ΡΡΡ Π±Π»ΠΎΠ³, ΠΈ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΡΡΠ½ΡΠΉ Ρ Π°Π± ΠΎΠ½Π»Π°ΠΉΠ½. Π‘ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ Twitter ΠΈ Instagram, ΠΌΠΈΠΊΡΠΎΠ±Π»ΠΎΠ³ΠΈ ΡΡΠ°Π»ΠΈ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ. Π ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΠΈΠ³Π΅Π»Ρ ΠΡΠΈΠ½Π΅ΡΠ³Π°, Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΈΠΊΡΠΎΠ±Π»ΠΎΠ³.
ΠΠ½ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΠΠ΅Π³Π°-ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ FlaskΒ», ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ. ΠΡΠΎΡΠ°Π±ΠΎΡΠ°Π² 23 Π³Π»Π°Π²Ρ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Flask. Π ΠΊΠΎΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΎ Flask, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π΄Π΅Π»Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Ρ
, Ρ ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΡ ΡΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π²Π΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΡΠ°ΡΡ Π»ΡΡΡΠΈΠΌ Π²Π΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π΅Π³ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½, ΠΊΡΠΏΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² Amazon, ΠΈΠ»ΠΈ ΠΏΡΠΎΠΉΡΠΈΡΡ Ρ Π°Π²ΡΠΎΡΠΎΠΌ ΠΏΠΎ ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΡΡΡΡ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ. ΠΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΊΡΡΡΠ°, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Django ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΠ΅ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
#6: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°
Π₯ΠΎΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΈΠ½Π°Π½ΡΠΎΠ²Π°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ . ΠΠ»ΠΎΠΊΡΠ΅ΠΉΠ½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ : ΠΎΡ ΡΠ΄Π΅Π»ΠΎΠΊ Ρ Π½Π΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΡΡ, Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Ρ ΠΌΠ΅Π΄ΠΈΡΠΈΠ½ΡΠΊΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΡΡΠΎΠΈΠ² ΡΠ²ΠΎΠΉ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½! Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Hackernoon ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Ρ Π½ΡΠ»Ρ. Π ΠΊΠΎΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ HTTP ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ requests. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Flask, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ HTTP ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠΌ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
ΠΠΎΠΌΠ½ΠΈΡΠ΅, Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ β ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°Π½Π°ΡΠΎΠ² ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΡ. ΠΠΎΡΡΡΠΎΠΈΠ² ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΌΠΈΠΌ, Π²Ρ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΊΡΠ΅Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅ΠΉ Π²Π°Ρ ΠΎΠ±Π»Π°ΡΡΠΈ.
#7: Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ Π»Π΅Π½ΡΠΎΠΉ Twitter
ΠΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΉΠΊΠ° Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΌΠ΅Π³Π°-ΠΏΡΠΎΠ΅ΠΊΡ? ΠΠ΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΠ΅ΡΡ, ΠΌΡ ΠΊΠΎΠ΅-ΡΡΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π΄Π»Ρ Π²Π°Ρ. Π‘ Π½Π°ΠΌΠΈ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ².
ΠΠΎΠ± ΠΠ΅Π»Π΄Π΅ΡΠ±ΡΠΎΡ Π΄Π΅Π»ΠΈΡΡΡ ΠΊΠ΅ΠΉΡΠΎΠΌ, Π³Π΄Π΅ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π» 40th PyBites Code Challenge, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΏΠΎ Π»Π΅Π½ΡΠ΅ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ Daily Python Tip Π² Π’Π²ΠΈΡΡΠ΅ΡΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅Π½Π΄ΠΆΠ° ΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΠΌΠ΅ΡΡΠΎ Flask, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Bottle. ΠΠ½ ΡΠ»Π°Π²ΠΈΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π°Π±ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΈΠΌ ΠΈ ΠΏΡΠΎΡΡΡΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Tweepy, ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· API Π’Π²ΠΈΡΡΠ΅ΡΠ°. ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ
ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π±Π°Π·Π΅ SQLAlchemy ΠΈΠ»ΠΈ Peewee, ΡΠ°ΠΊ ΡΡΠΎ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ
SQL.
#8: ΠΠ³ΡΠ°ΠΉΡΠ΅ Π² PyGames
ΠΡΠΎΡ ΡΠ°Π·Π΄Π΅Π» Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ Π²Π΅ΡΠ΅Π»ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ΠΌΡ. Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°ΡΠΊΠ°Π΄Π½ΡΡ ΠΈΠ³Ρ, Π°Π΄Π²Π΅Π½ΡΡΡ ΠΈ ΠΏΠ°Π·Π»ΠΎΠ², Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠΉΠ΄Π΅Ρ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ. Π ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ³ΡΠ°ΠΌ, ΡΠΈΠΏΠ° ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³Π° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠ²ΠΎΠΈΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Pygame Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΈΠ³Ρ. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΠ³Ρ.
Pygame ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΡΠΊΡΡΡΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π·Π²ΡΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π΅ΡΡΡΠΊΠΈ ΠΈΠ³Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π§ΡΠΎ-Π±Ρ Π²Ρ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠ²ΡΡΠ²ΡΠΉΡΠ΅ ΡΠ΅Π±Ρ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΠΈ Π΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΠΌΠΈ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ Pygame!
#9:Β ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎ Π΄ΡΡ
Ρ ΠΏΠΎΠ²Π΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎ Ρ Π²Π°Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠ°ΡΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΡΠΎ ΠΊΡΡΡΠΎΠ΅ Π² Python.
Π―Π·ΡΠΊ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄ΠΎΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΈΠ²Π°. Π‘ ΡΡΠΈΠΌ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
ΠΈΠ³Ρ Π² Python.
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Python, ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΌΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅ ΠΈ Π½Π΅ΠΈΠ·Π²Π΅Π΄Π°Π½Π½ΡΠΌΠΈ Π·Π΅ΠΌΠ»ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Π²ΡΡΠ»Π° Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²ΠΈΠΆΠΎΠΊ, Π²ΡΠΎΠ΄Π΅ RenPy, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π²ΡΠΊΠΈ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π²Π°ΡΡ ΠΈΠ³ΡΡ, ΡΠΎΠ·Π΄Π°Π² Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ Π½ΠΎΠ²Π΅Π»Π»Ρ Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ. (ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ»ΠΎΠΆΠΈΡΡ ΠΈΠ³ΡΡ Π² Steam ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ°ΡΡ ΠΎΠ΄ΠΈΡΡΡ! ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ·ΡΠ² ΠΎ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ β ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΌΠΈΡΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΠ΅.)
#10: Π‘ΠΊΠ°ΠΆΠΈΡΠ΅ βΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!β ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ
ΠΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΡΡΠΎΠΉ ΡΡΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΡΡΠ°ΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΈ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
Π ΡΡΠ°ΡΡΡΡ, Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅ΡΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΎΡΠ²ΠΎΠΈΡΡΡΡ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π½ΡΡΠ½ΡΡΡ Ρ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ Π² ΠΌΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ data science. ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΎ ΠΠΆΠ΅ΠΉΡΠΎΠ½ΠΎΠΌ ΠΡΠ°ΡΠ½Π»ΠΈ, ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ
ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Python Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.
ΠΡ ΠΏΡΠΎΠΉΠ΄Π΅ΡΠ΅ΡΡ ΠΏΠΎ ΡΡΠ΄Ρ Π±Π°Π·ΠΎΠ²ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ Python, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Π² ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΎΠ².
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ Π² Π½Π΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΊΠΎΠ½ΡΠΈΡΡ Π΅Π³ΠΎ Π²ΡΠ΅Π³ΠΎ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ². ΠΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΊΡΡΡΠ°, Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Python Π² Π½Π°ΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ³Π΄Π° Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½ΡΡΡΡΡ Ρ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΡΠΈΠΌΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°ΠΌΠΈ, Π³Π΄Π΅ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΠΈΡΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΡΠ΅ΡΡ ΠΈ Π»ΠΈΡΠ°, ΠΈ Π²ΡΠ΅ ΡΡΠΎ Π² Python!
#11: ΠΡΠΎΡΠ°Π΅ΠΌ Π²ΡΠ·ΠΎΠ²!
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Π³ΠΎΡΠΎΠ²Ρ ΠΎΠΊΡΠ½Π°ΡΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ ΡΠ°Π½Π΅Π΅, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π²Π°Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΡΠΌΠ°ΡΡ: Π° ΡΠ΅ΠΌ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π½ΡΡΡΡΡ?
ΠΠΎΠ΄Π΅ΡΡΠΊΠΈΠ΅ Π·Π°Π΄Π°ΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΠΏΠΎΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ Π² Π½Π°Π²ΡΠΊΠ°Ρ
ΡΠ°Π±ΠΎΡΡ Π² Python ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎ Π²ΡΠ΅ΠΌ ΡΠΏΠ΅ΠΊΡΡΠ΅ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π² Python,
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ: Π²Π°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Python.
Π£ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ» Π΄Π»Ρ Π²Π°Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π² ΡΠ·ΡΠΊ Python ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ. Π’Π°ΠΊ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠ΄ΠΎΠ²ΡΠ΅ ΡΠ΅Π»Π΅Π½Π΄ΠΆΡ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ²ΠΎΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ². ΠΡ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, ΡΡΠΎ Π·Π°ΡΠ΅ΠΏΠΈΡ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΠΈ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»ΡΡΡ ΡΡΠΎΠΌΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΡΠΎΠΌΡ ΡΠΏΠΈΡΠΊΡ ΠΈ Π½Π°ΠΉΡΠΈ ΡΠΎ, ΡΡΠΎ Π·Π°ΠΆΠ³Π»ΠΎ Π² Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ΅Π»Π΅Π½Π΄ΠΆΠ΅ΠΉ.
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ , ΡΡΠΎΠ±Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΡΠΈΠ»Ρ:
- Python Challenge. ΠΠΎΠ»Π΅Π΅ 20 Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΡΠΎΠ²Π½Π΅ΠΉ. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π² Python, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ. ΠΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ Π΅ΡΡΡ ΡΠ°Π·Π±ΡΠΎΡΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ, Π½ΠΎ ΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ!
- PyBites Code Challenge. ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ 50 Π·Π°Π΄Π°Ρ, ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΡΠ΅Ρ! ΠΡΠΈ Π·Π°Π΄Π°ΡΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Ρ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ Π²Ρ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Python Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ΅ΡΠ°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ°ΠΊΠΈΡ Π·Π°Π΄Π°ΡΠ°Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π»ΠΈΡΠ½ΠΈΠΌ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΡΡΡ.
ΠΠ½ΠΈΠ³Π° Python Tricks β ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ. Π ΠΊΠ½ΠΈΠ³Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΌΠ°Π»ΠΎΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ Python, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΈ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Π·Π°Π΄Π°ΡΠΈ.
Π§Π΅Π³ΠΎ (ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ) Π½Π΅ ΡΡΠΎΠΈΡ Π΄Π΅Π»Π°ΡΡ Π² Python?
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Python β ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΌΠ°ΡΡΡ Π²Π΅ΡΠ΅ΠΉ. ΠΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π²ΡΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ΅ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Python Π½Π΅ ΡΠ°ΡΡΡΠΈΡΠ°Π½.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Ρ Python Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π²Π°Ρ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Python. ΠΠ°ΠΌ Π»ΡΡΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡ Π΅Π³ΠΎ Ρ Π‘ ΠΈΠ»ΠΈ Π‘++ Π΄Π»Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΄Π°ΠΆΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π½Π΅ Π΄ΠΎΠ»Π³ΠΎ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ Python, Π΅ΡΡΡ Π»ΡΠ΄ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΠ·Π°Π±ΠΈΠ»ΠΈΡΠΈ Python Π΄Π»Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. MicroPython β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Python.
Π§ΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΡΠ΅ΠΉ ΠΈΠ΄Π΅ΠΈ Π½Π΅Ρ Π² ΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅?
ΠΠΈΡΠ΅Π³ΠΎ ΡΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ! ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΡΠ΄ Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠΈΠΌ: ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π² Python, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅. ΠΠ΅ Π΄ΡΠΌΠ°ΠΉΡΠ΅, ΡΡΠΎ Π²Π°ΡΠΈ ΠΈΠ΄Π΅ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠ°ΠΊ-Π»ΠΈΠ±ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±Π°Π·Π°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ.
Π ΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ΄Π΅ΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠ΅ Python Ρ
ΠΎΡΠΎΡΠΎ Π·Π°ΡΠΎΡΠ΅Π½. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π΄Π°Π½Π½ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ Π² Π±Π»ΠΎΠ³Π΅, Π°Π²ΡΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π³Π΄Π΅ Π½Π°ΠΉΡΠΈ Π²Π΄ΠΎΡ
Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Python.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ Π²ΠΎΠ»ΡΠ½Ρ ΠΈΡΠΊΠ°ΡΡ ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ Π΄Π°Π»ΡΡΠ΅?
ΠΡ, Π²ΠΎΡ ΠΈ Π²ΡΠ΅! ΠΠ΄ΠΈΠ½Π½Π°Π΄ΡΠ°ΡΡ ΠΏΡΡΠ΅ΠΉ ΠΎΡ Π½ΠΎΠ²ΠΈΡΠΊΠ° Π² Python Π΄ΠΎ ΠΏΡΠΎΠΆΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΡΠΎΠ½ΠΈΡΡΠ°!
ΠΠ΅Π²Π°ΠΆΠ½ΠΎ, Ρ ΡΠ΅Π³ΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΡΠ°ΡΡ, Π²Π°ΠΌ ΠΎΡΠΊΡΡΡΡ Π±Π΅ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠΏΠ΅ΠΊΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π°ΡΠΈΡ
Π½Π°Π²ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΡΠΈΠ½Π°ΠΉΡΠ΅ Ρ ΡΠ΅Π³ΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ! Π ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΈΠ΄Π΅Ρ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ Π² ΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅? ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
! ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°-ΠΏΠΎΠ±ΡΠ°ΡΠΈΠΌΠ°.
ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΡΡΡΡΠ»ΠΈ ΠΈ ΠΈΡΠ΅ΡΠ΅ ΡΠΎΠ»ΡΠΎΠΊ Π² Π½ΡΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ! ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌ Π΄Π΅Π»ΠΎΠΌ.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠ΅ΡΠ΅ ΡΠΏΠΎΡΠΎΠ± Π·Π°Π΄Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΡΡΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ² β Python Π€ΠΎΡΡΠΌ Π²ΡΠ΅Π³Π΄Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½. ΠΡΠΎ ΡΠ°ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡ Ρ ΡΠ΅ΠΌΠΈ, ΠΊΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΠ΅Π· Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠ΅ ΡΡΠ΅Π½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π°ΡΠΊΠ½ΡΠ»ΠΈΡΡ, ΡΠ°Π±ΠΎΡΠ°Ρ Π² Pyhton.
Python β ΡΡΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. ΠΠΎΡΠ΅ΠΌΡ? / RUVDS.com corporate blog / Habr
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ ΡΠΎΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² DevOps, Π² Π°Π½Π°Π»ΠΈΠ·Π΅ Π΄Π°Π½Π½ΡΡ , Π² Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Π² ΡΡΠ΅ΡΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ . ΠΠΎ Π²ΠΎΡ ΡΠΊΠΎΡΠΎΡΡΡβ¦ ΠΠ΄Π΅ΡΡ ΡΡΠΎΠΌΡ ΡΠ·ΡΠΊΡ ΠΏΠΎΡ Π²Π°ΡΡΠ°ΡΡΡΡ Π½Π΅ΡΠ΅ΠΌ. ΠΠ²ΡΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ, ΡΠ΅ΡΠΈΠ» Π²ΡΡΡΠ½ΠΈΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Python ΠΈ Π½Π°ΠΉΡΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΅Π³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ.ΠΠ±ΡΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ°ΠΊ Java, Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠΎΡΠ½ΠΎΡΠΈΡΡΡ Ρ C ΠΈΠ»ΠΈ C++? ΠΠ°ΠΊ ΡΡΠ°Π²Π½ΠΈΡΡ C# ΠΈ Python? ΠΡΠ²Π΅ΡΡ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΡΠ΅ΡΡΡΠ·Π½ΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠΈΠΏΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°, Π½ΠΎ, ΠΈΠ·ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ The Computer Language Benchmarks Game.
Π― ΡΡΡΠ»Π°ΡΡΡ Π½Π° The Computer Language Benchmarks Game ΡΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΡΡΡΠΈ Π»Π΅Ρ. Python, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ Java, C#, Go, JavaScript, C++, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ . Π‘ΡΠ΄Π° Π²Ρ ΠΎΠ΄ΡΡ ΡΠ·ΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ (C#, Java), ΠΈ AOT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ (C, C++), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠ·ΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ JavaScript.
Π’ΡΡ ΠΌΠ½Π΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΡ Β«PythonΒ», Ρ ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ ΡΡΠ°Π»ΠΎΠ½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python β CPython. Π ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ ΠΌΡ ΠΊΠΎΡΠ½ΡΠΌΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π·Π΄Π΅ΡΡ ΠΌΠ½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ Π½Π°ΠΉΡΠΈ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Python ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π² 2-10 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ, Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΡΡ Π·Π°Π΄Π°Ρ, ΠΈ ΠΎ ΡΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΡΡΡΡΠ΅Π΅.
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΠΎΡΠΈΠΈ, ΠΏΡΡΠ°ΡΡΠΈΠ΅ΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Python:
- ΠΡΠΈΡΠΈΠ½Π° ΡΡΠΎΠ³ΠΎ β Π² GIL (Global Interpreter Lock, Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°).
- ΠΡΠΈΡΠΈΠ½Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Python β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ, Π° Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ.
- ΠΡΠΈΡΠΈΠ½Π° β Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΡΠΈ ΠΈΠ΄Π΅ΠΈ ΠΈ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ Π½Π°ΠΉΡΠΈ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΠ»ΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Python-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
GIL
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡ ΡΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΡΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ β ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Chrome) ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠΈΠ»ΡΠ½ΠΎ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠ΅ΡΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ΄ΡΠ°ΠΌΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΡΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ°ΡΡ Π²ΡΡΠ°ΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΌΠΎΠ΅Π³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Chrome, Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Ρ ΡΡΠΎ ΠΏΠΈΡΡ, ΠΈΠΌΠ΅Π΅ΡΡΡ 44 ΠΎΡΠΊΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠ°. Π’ΡΡ ΡΡΠΎΠΈΡ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ° ΠΈ API ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠ°Π΅ΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Posix (Mac OS, Linux), ΠΈ Π² ΠΠ‘ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Windows. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ Π²Ρ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ (locks). Π‘ΠΌΡΡΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π°, Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ (Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ) Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠΎΠ³Π΄Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ CPython ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠ½ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΡΡΡ ΡΡΡΠ»ΠΎΠΊ (reference counting). ΠΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΡΡΠ»ΠΎΠΊ ΡΠ°Π²Π½ΡΠ΅ΡΡΡ Π½ΡΠ»Ρ, ΡΠΎΠ³Π΄Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Β«Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Β» ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΈΠΊΠ»ΠΎΠ², Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
Π‘Π°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π° Π³Π»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ CPython Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΡΡΡ ΡΡΡΠ»ΠΎΠΊ. Π’ΡΡ ΠΈ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Β«Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°Β», ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π° ΡΠ°Π·, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅ΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
βΠΠ°ΠΊ GIL Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Python-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ?
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python, ΡΠΎ GIL Π½ΠΈΠΊΠ°ΠΊ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ. ΠΡΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ GIL, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΡ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠΌ.
ΠΡΠ»ΠΈ ΠΆΠ΅, Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python, Π½Π°Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ Ρ Π΄ΠΈΡΠΊΠΎΠΌ), ΡΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ GIL ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ Π½Π°Π³ΡΡΠΆΠ°ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ GIL (Π²Π·ΡΡΠΎ ΠΎΡΡΡΠ΄Π°)
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Django), ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ WSGI, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΊ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python, ΡΠΎ Π΅ΡΡΡ, Ρ Π½Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΠΈΡΡ 1 Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π·Π°ΠΏΡΠΎΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ WSGI ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Β«ΡΠ΅ΠΆΠΈΠΌ Π΄Π΅ΠΌΠΎΠ½Π°Β», ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π±ΡΡΡΡΠ΅Π΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ.
βΠΠ°ΠΊ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Python?
Π PyPy Π΅ΡΡΡ GIL, ΠΎΠ½ ΠΎΠ±ΡΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² 3 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ CPython.
Π Jython Π½Π΅Ρ GIL, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΈ Python Π² Jython ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² Java. Π’Π°ΠΊΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ JVM.
βΠΠ°ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² JavaScript?
ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ JavaScript, ΡΠΎ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π½Π°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ JS-Π΄Π²ΠΈΠΆΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° mark-and-sweep. ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ GIL β ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π² CPython.
Π JavaScript Π½Π΅Ρ GIL, ΠΎΠ΄Π½Π°ΠΊΠΎ, JS β ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π² Π½ΡΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΈ Π½Π΅ Π½ΡΠΆΠ΅Π½. ΠΠΌΠ΅ΡΡΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² JavaScript ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΠΈΠΊΠ»Π΅ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΏΡΠΎΠΌΠΈΡΠ°Ρ
ΠΈ ΠΊΠΎΠ»Π»Π±ΡΠΊΠ°Ρ
. Π Python Π΅ΡΡΡ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ asyncio
.
Python β ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ
ΠΠ½Π΅ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π½ΠΈΠ·ΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΎ β ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° Π³ΡΡΠ±ΠΎΠΌ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ CPython. ΠΡΠ»ΠΈ, Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅, Π²Π²Π΅ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠΎΠ΄Π΅
python myscript.py
, ΡΠΎΠ³Π΄Π° CPython Π½Π°ΡΠ½ΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΡΠ΅Π½ΠΈΠΈ, Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅, ΠΏΠ°ΡΡΠΈΠ½Π³Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠΊΡΠΈΠΏΡΠ°. ΠΡΠ»ΠΈ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ β Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΡΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π».ΠΠ»Ρ Π½Π°Ρ, ΠΏΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π·Π΄Π΅ΡΡ, Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠΎΠ·Π΄Π°ΡΡΡΡ .pyc
-ΡΠ°ΠΉΠ», ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠΈΡΠ΅ΡΡΡ Π² ΡΠ°ΠΉΠ» Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ __pycache__/
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈ Π² Python 3, ΠΈ Π² Python 2.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π°ΠΌΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ, Π½ΠΎ ΠΈ ΠΊ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π΅ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·) Python Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Java ΠΈ Π² C#, ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π° Java ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² Β«Intermediate LanguageΒ», ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Java ΡΠΈΡΠ°Π΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π³ΠΎ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. Β«ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊΒ» .NET CIL (ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ .NET Common-Language-Runtime, CLR), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΊ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, ΠΈ Π² Java ΠΈ Π² C# ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΈΠΉ Β«ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ·ΡΠΊΒ» ΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ. ΠΠΎΡΠ΅ΠΌΡ ΠΆΠ΅ ΡΠΎΠ³Π΄Π° Python ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π² Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Ρ ΡΠ΄ΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΡΠ΅ΠΌ Java ΠΈ C#, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΡΡΠΈ ΡΠ·ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠΈ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°? Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ β ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² .NET ΠΈ Π² Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ.
JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ (Just In Time compilation, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Β«Π½Π° Π»Π΅ΡΡΒ» ΠΈΠ»ΠΈ Β«ΡΠΎΡΠ½ΠΎ Π² ΡΡΠΎΠΊΒ») ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ (ΠΊΠ°Π΄ΡΡ). Π‘ΠΈΡΡΠ΅ΠΌΡ AOT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (Ahead Of Time compilation, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ) ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΡΠ½ΡΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
Π‘Π°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ JIT Π½Π΅ ΡΡΠΊΠΎΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π² Python, Π½Π΅ΠΊΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°. ΠΠ΄Π½Π°ΠΊΠΎ JIT ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π₯ΠΎΡΠΎΡΠΈΠΉ JIT-ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π²ΡΡΠ²ΠΈΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠ°ΠΊΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Π·ΡΠ²Π°ΡΡ Β«hot spotΒ») ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π°, Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ, ΡΠ΅ΠΌ ΡΠ΅, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ°Π½Π΅Π΅.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½Π΅ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π½Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Java ΠΈ C# β ΡΡΠΎ ΡΠ·ΡΠΊΠΈ ΡΠΎ ΡΡΡΠΎΠ³ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΎ ΠΊΠΎΠ΄Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΡΡΠΈΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΅ΡΡΡ Π² PyPy, ΠΈ, ΠΊΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ CPython. Π‘Π²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Python, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅.
βΠΠΎΡΠ΅ΠΌΡ Π² CPython Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ?
Π£ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Π΅ΡΡΡ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ β Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°. CPython ΠΈ ΡΠ°ΠΊ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Π° PyPy Π² 2-3 ΡΠ°Π·Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ CPython. ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° JVM β ΡΡΠΎ ΡΠΎΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠ°ΠΊΡ. CLR .NET ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡ Π² Ρ ΠΎΠ΄Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, Π½ΠΎ ΡΡΡ Π½Π°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈ CLR, ΠΈ ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ CLR, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ Python, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ, ΡΠΎΠ³Π΄Π° Π²Π°ΠΌ ΡΡΠΎΠΈΡ ΡΠ΅ΡΡΡΠ·Π½ΠΎ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, CPython β ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Python ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ° JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ ΡΠ°Π±ΠΎΡΡ.
CPython ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Python. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊ Python, ΠΏΡΠ°Π²Π΄Π°, ΠΏΡΠΎΠ΅ΠΊΡ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΡΠ° ΠΈΠ΄Π΅Ρ, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python, ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ PyPy.
Python β Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ
Π ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΡ ΡΠΈΠΏΡ. Π‘ΡΠ΅Π΄ΠΈ ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ C, C++, Java, C#, Go.
Π Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠΌΡΡΠ», Π½ΠΎ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ.
a = 1
a = "foo"
Π ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Python ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
a
, ΠΏΠΎΡΠΎΠΌ β Π²ΡΠΎΡΡΡ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΈΠΌΠ΅ΡΡΡΡ ΡΠΈΠΏ str
, ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΠ°ΠΌΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° Π²ΡΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ a
.ΠΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° ΡΠ·ΡΠΊΠ°Ρ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π½Π° ΡΠ·ΡΠΊΠ°Ρ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π½Π΅ ΠΏΠΎ ΡΡΠ΅ΠΉ-ΡΠΎ ΠΏΡΠΈΡ ΠΎΡΠΈ. ΠΡΠΈ ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΡΠ΅Π½Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΡΡ, ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΈΡΠΎΠ³Π΅, ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΠΎΠΆΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΡΡ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ.
Python Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π΅ Π²ΠΈΠ΄ΠΈΡ, ΠΈ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΡ Π΅ΠΌΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ.
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈ Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ β ΡΡΠΎ Π½Π΅ ΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ·ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Python ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠ·ΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ, ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΏΡΡΡ ΠΆΠ΅, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ Β«ΠΎΠ±Π΅Π·ΡΡΠ½ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΠΉΒ» Π² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ. Π Python Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ.
ΠΠΌΠ΅Π½Π½ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Python ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΠΈΠ΄Π΅Ρ, Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² MacOS, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ DTrace.
Π Π³ΠΎΡΠΎΠ²ΠΎΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ CPython Π½Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ DTrace, ΠΏΠΎΡΡΠΎΠΌΡ CPython Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ. Π’ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΡ 3.6.6. ΠΡΠ°ΠΊ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
wget https://github.com/python/cpython/archive/v3.6.6.zip
unzip v3.6.6.zip
cd v3.6.6
./configure --with-dtrace
make
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ
python.exe
, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ DTRace Π΄Π»Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ DTrace Ρ Python ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ. Π Π²ΠΎΡ ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΊΡΠΈΠΏΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ DTrace ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ Python-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π‘ΡΠ΅Π΄ΠΈ Π½ΠΈΡ
β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²Π°Ρ
ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ dtrace
:sudo dtrace -s toolkit/<tracer>.d -c β../cpython/python.exe script.pyβ
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ
py_callflow
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.Π’ΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ DTrace
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠ²Π΅ΡΠΈΠΌ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, Π²Π»ΠΈΡΠ΅Ρ Π»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Python. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ:
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠΆΡΠ»ΡΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ°.
- Π―Π·ΡΠΊ, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ, ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±ΡΡΡΡΠ΅Π΅ Python, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΈΠ΄ΡΡ Π½Π° ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΡ, Π²ΡΠ±ΠΈΡΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ.
- ΠΡΠΎΠ΅ΠΊΡ Cython ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Python ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΡΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ 84-ΠΊΡΠ°ΡΠ½ΠΎΠΌΡ ΡΠΎΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Python. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠΊΠΎΡΠΎΡΡΡ.
ΠΡΠΎΠ³ΠΈ
ΠΡΠΈΡΠΈΠ½ΠΎΠΉ Π½Π΅Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Python ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΈΡΠΎΠ΄Π° ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½Π΅ΠΉΡΠΈΡ Π·Π°Π΄Π°Ρ. ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅, Π»ΡΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΉΡΠΈ ΠΈΡ ΡΠ΄Π°ΡΡΡΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β Π½Π΅Ρ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Python, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ β ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π±ΠΈΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ. Π’Π°ΠΊ, Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΈΠ³ΡΠ°ΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ PyPy. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ β Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° Cython.
Π£Π²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ°ΠΊ Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Python?
Π§ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡΠ΅ΠΌΡ Π½Π° Python / Habr
ΠΠΎΠ³Π΄Π°-ΡΠΎ Π΄Π°Π²Π½ΠΎ, Π² ΡΡΡΠ΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠ΅ Π³ΠΎΠ΄Ρ, ΠΌΠ΅Π½Ρ ΡΠΊΡΡΠΈΠ» ΠΏΠΈΡΠΎΠ½, ΠΏΡΠ°Π²Π΄Π° ΠΈΠ½ΠΊΡΠ±Π°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π·Π°ΡΡΠ½ΡΠ»ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Ρ ΡΡΠ°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Π½Π° ΠΏΠ΅ΡΠ»Π΅.
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ» ΠΈΡΡΠ΅ΡΠΏΠ°Π» ΡΠ΅Π±Ρ ΠΈ Ρ ΡΠ΅ΡΠΈΠ» Π·Π°Π½ΡΡΡΡΡ ΠΏΠΈΡΠΎΠ½ΠΎΠΌ, ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π» ΡΡΠΎ-ΡΠΎ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π»ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Π½ΡΠΆΠ½Ρ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΈΠ³:
- ΠΠΈΠ»Π» ΠΡΠ±Π°Π½ΠΎΠ²ΠΈΡ Β«ΠΡΠΎΡΡΠΎΠΉ Python. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ»
- ΠΡΠ½ ΠΠ΅ΠΉΠ΄Π΅Ρ Β«Π§ΠΈΡΡΡΠΉ Python. Π’ΠΎΠ½ΠΊΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΒ»
- ΠΡΠ΅ΡΡ Π‘Π»Π°ΡΠΊΠΈΠ½ Β«Π‘Π΅ΠΊΡΠ΅ΡΡ Python: 59 ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°Β»
ΠΠΎΡΠΎΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΎΠ½ΠΊΠΎΡΡΠ΅ΠΉ ΡΠ·ΡΠΊΠ°, Ρ ΠΎΡΡ Π½Π΅ ΠΏΠΎΠΌΠ½Ρ, ΡΡΠΎΠ±Ρ Π² Π½ΠΈΡ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΠΏΡΠΎ slots, Π½ΠΎ ΠΈ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½Π°Ρ ΡΠΈΡΠ° β Π΅ΡΠ»ΠΈ ΡΠΆΠ΅ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈΠΆΠ°Π»ΠΎ, ΡΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, Π½ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΡΠΎ Π²ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
Π ΠΈΡΠΎΠ³Π΅ Ρ ΠΌΠ΅Π½Ρ Π½Π°ΠΊΠΎΠΏΠΈΠ»ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΎΠ± ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΏΠΈΡΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΡΠΎΠΌΡ ΠΊΡΠΎ ΠΏΠΎΠΆΠ΅Π»Π°Π΅Ρ ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π½Π΅Π³ΠΎ Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ².
Π― Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ
ΠΏΠΎ ΠΏΠΈΡΠΎΠ½Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π·Π°Π΄Π°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΎ Π²Π΅ΡΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΠΈΠΏΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ»ΡΡΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ (ΠΈΠ»ΠΈ ΠΏΡΠΎ ΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ x = yield y
), Π½Ρ ΡΡΠ²Π°ΠΊΠΈ, Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠ°, Π² ΡΠ΅Ρ
ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, Π·Π°ΡΠ΅ΠΌ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠ΅? Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠ΅Π³ΠΎ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΡΠ΅ΠΌΡΠΉ Π½Π΅ Π·Π½Π°Π΅Ρ? Π’Π°ΠΊ Π² ΠΈΡΠΎΠ³Π΅ Π²ΡΠ΅ Π·Π°ΠΏΠΎΠΌΠ½ΡΡ ΠΎΡΠ²Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Ρ ΡΡΠΈΡΠ°Ρ ΠΏΠΈΡΠΎΠ½ Π²Π΅ΡΡΠΈΠΉ Π²ΡΡΠ΅ 3.5 (ΠΏΡΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΈΡΠΎΠ½ Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡΠ° Π·Π°Π±ΡΡΡ) Ρ.ΠΊ. ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ Π² ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΌ Π΄Π΅Π±ΠΈΠ°Π½Π΅, Π° Π·Π½Π°ΡΠΈΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ )
Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ Π³ΡΡΡ ΠΏΠΈΡΠΎΠ½Π°, ΡΠΎ Π½Π°Π΄Π΅ΡΡΡ ΠΌΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ°Π²ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π΅ΡΠ»ΠΈ Ρ Π²Π΄ΡΡΠ³ ΡΠΌΠΎΡΠΎΠ·ΠΈΠ» ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π³Π»ΡΠΏΠΎΡΡΡ.
Π’ΠΈΠΏΠΈΠ·Π°ΡΠΈΡ
ΠΠΈΡΠΎΠ½ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Ρ.Π΅. ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
cat type.py
a=5
b='5'
print(a+b)
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ:
python3 type.py
... TypeError: unsupported operand type(s) for +: 'int' and 'str'
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠ·ΡΠ΅Π» Π΄ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎ ΠΏΠΈΡΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈ ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΡΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° mypy
:
mypy type.py
type.py:3: error: Unsupported operand types for + ("int" and "str")
ΠΡΠ°Π²Π΄Π° ΡΠ°ΠΊ Π»ΠΎΠ²ΡΡΡΡ Π½Π΅ Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ:
cat type2.py
def greeting(name):
return 'Hello ' + name
greeting(5)
mypy ΡΡΡ Π½Π΅ ΡΡΠ³Π½ΡΡΡΡ, Π° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ»ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠΈΡΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ:
cat type3.py
def greeting(name: str) -> str:
return 'Hello ' + name
greeting(5)
Π° ΡΠ΅ΠΏΠ΅ΡΡ:
mypy type3.py
type3.py:4: error: Argument 1 to "greeting" has incompatible type "int"; expected "str"
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ Π΄Π°Π½Π½ΡΠ΅
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΏΠΈΡΠΎΠ½Π΅ Π½Π΅ Ρ
ΡΠ°Π½ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π° Π»ΠΈΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π½ΠΈΡ
, Π° Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (ΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠ΅) ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ (ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠ΅).
ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
Π² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
x = 1
y = x
x = 2
print(y)
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ x
ΠΈ y
ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° ΡΠ°ΠΊΠΎΠΉ:
x = [1, 2, 3]
y = x
x[0] = 7
print(y)
Π½Π΅Ρ, x
ΠΈ y
ΠΎΡΡΠ°ΡΡΡΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΏΠΈΡΠΎΠΊ (Ρ
ΠΎΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄Π°ΡΠ½ΡΠΉ, Π½ΠΎ Π»ΡΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»), ΡΡΠΎ ΠΊΡΡΠ°ΡΠΈ Π² ΠΏΠΈΡΠΎΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ is
(Ρ ΡΠ²Π΅ΡΠ΅Π½ ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Π΄ΠΆΠ°Π²Ρ Π½Π°Π²ΡΠ΅Π³Π΄Π° Π»ΠΈΡΠΈΠ»ΡΡ Ρ
ΠΎΡΠΎΡΠ΅Π³ΠΎ ΡΠ½Π° ΠΎΡ ΡΡΡΠ΄Π° ΠΊΠΎΠ³Π΄Π° ΡΠ·Π½Π°Π» ΠΏΡΠΎ ΡΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π² ΠΏΠΈΡΠΎΠ½Π΅).
Π‘ΡΡΠΎΠΊΠΈ Ρ ΠΎΡΡ ΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ°ΠΌΡ ΡΡΡΠΎΠΊΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΡΡ ΠΏΠΎΡΠΎΠ΄ΠΈΡΡ Π½ΠΎΠ²ΡΡ, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΄ΡΡΠ³ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Ρ ΠΎΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡ:
>>> mystr = 'sss'
>>> newstr = mystr # Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅
>>> mystr[0] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> mystr = 'ssa' # ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
>>> newstr # Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅
'sss'
ΠΡΡΠ°ΡΠΈ, ΠΎ ΡΡΡΠΎΠΊΠ°Ρ , ΠΈΠ·-Π·Π° ΠΈΡ ΠΈΠΌΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΡΡΡΠΎΠΊ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ append’ΠΎΠΌ Π² ΡΠΈΠΊΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅/Π²Π΅ΡΡΠΈΠΈ), ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ join, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ:
>>> str_list = ['ss', 'dd', 'gg']
>>> 'XXX'.join(str_list)
'ssXXXddXXXgg'
>>> str = 'hello'
>>> 'XXX'.join(str)
'hXXXeXXXlXXXlXXXo'
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΡΠΎΠΊΠ° Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ, Π° Π½Π΅ Π½Π°ΡΠ°Π»ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, Π° Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠΏΠΈΡΠΎΠΊ (ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ), Π° Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ±ΠΎ ΡΠ°ΠΊΠΎΠ²Π°Ρ ΡΠΎΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΆΠΎΠΉΠ½Π΅Π½Π° ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ, ΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ Π½Π΅ Π»ΠΎΠΌΠ°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΡ Π΅ΡΡΡ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΠΌΠ΅Π½Ρ β ΡΡΠ½ΠΊΡΠΈΡ copy ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ²Π΅Π½Ρ, ΡΡΠΎ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ deepcopy
.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π½Π° ΡΠΊΠ°Π»ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π·Π±ΠΈΡΠ°Π»ΠΎΡΡ ΡΡΡ.
ΠΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ
Π’Π΅ΠΌΠ° ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΠΎΡΠ΅Π΅ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ, Π½ΠΎ Π΅ΡΡΡ Ρ
ΠΎΡΠΎΡΠΈΠΉ ΠΎΡΠ²Π΅Ρ Π½Π° SO.
ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎ, ΡΠΎ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈ Π΅ΡΡΡ ΡΠ΅ΡΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΈ, Π² ΠΌΠΎΠ΄ΡΠ»Π΅, Π² ΡΠ΅Π»Π΅ ΠΊΠ»Π°ΡΡΠ°, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² ΠΏΠΈΡΠΎΠ½ ΡΡΠ½ΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΡ
ΠΈ ΠΈΠ½ΡΡ
Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
ΠΡΡΡ ΡΠΎΠ½ΠΊΠΎΡΡΡ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π² Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°Ρ
ΠΈΠΌΡΠ½, Π½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΡΠ»ΠΎΠ² nonlocal
ΠΈ global
Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΡΠ΅ ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
x = 7
print(id(x))
def func():
print(id(x))
return x
print(func())
Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΠ΄Π½ΠΎΠΉ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° ΡΠ°ΠΊΠΎΠΉ:
x = 7
print(id(x))
def func():
x = 1
print(id(x))
return x
print(func())
print(x)
ΡΠΆΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ.
Π‘ ΠΌΠΎΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ, ΠΏΠΎ ΠΈΠ΄Π΅Π΅ Π»ΡΠ±ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎ ΡΠ°ΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π΅Ρ ΡΠΈΠ³Π½Π°ΡΡΡΡ, Π° Π·Π½Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ²Π½ΠΎ ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½Ρ β global
Π·Π²ΡΡΠΈΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ use global
.
Π ΠΏΠΈΡΠΎΠ½Π΅ Π½Π΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π²Ρ
ΠΎΠ΄Π° Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
, ΠΏΡΠΎΡΡΠΎ Π²ΡΡ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠΎ, Ρ ΠΌΠΎΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ, Ρ
ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΠΏΠΈΡ
ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΡΠ½ΠΊΡΠΈΡ main()
Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π΅Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π°:
if __name__ == '__main__':
main()
ΡΠ°ΠΊΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΊΠ°ΠΊ ΡΠΊΡΠΈΠΏΡ, Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠΈΡΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠΊΠ°ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π·Π°Π΄Π°Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ β ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.
ΠΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² β Ρ.ΠΊ. Π² ΠΏΠΈΡΠΎΠ½Π΅ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄Π°Π½Π½ΡΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΡ Π΅ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ β ΡΠ°ΠΌΠ° ΡΡΡΠ»ΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ.Π΅. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅:
def add_element(mylist):
mylist.append(3)
mylist = [1,2]
add_element(mylist)
print(mylist)
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ:
python3 arg_modify.py
[1, 2, 3]
ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅Π»ΡΠ·Ρ Π·Π°ΡΠ΅ΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΡΡΠ»ΠΊΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ:
def try_del(mylist):
mylist = []
return mylist
mylist = [1,2]
try_del(mylist)
print(mylist)
ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΡΡΡΠ»ΠΊΠ° ΠΆΠΈΠ²Π° ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
python3 arg_kill.py
[1, 2]
Π’Π°ΠΊΠΆΠ΅ Π΄Π»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ Ρ ΡΡΠΈΠΌ Π΅ΡΡΡ ΠΎΠ΄Π½Π° Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°Ρ Π²Π΅ΡΡ ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ β Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π° Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅ΠΌ ΡΡΡΠΎΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ:
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
cat arg_list.py
def func(arg = []):
arg.append('x')
return arg
print(func())
print(func())
print(func())
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
python3 arg_list.py
['x']
['x', 'x']
['x', 'x', 'x']
Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
cat arg_now.py
from datetime import datetime
def func(arg = datetime.now()):
return arg
print(func())
print(func())
print(func())
ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
python3 arg_now.py
2018-09-28 10:28:40.771879
2018-09-28 10:28:40.771879
2018-09-28 10:28:40.771879
ΠΠΠ
ΠΠΠ Π² ΠΏΠΈΡΠΎΠ½Π΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π²Π΅ΡΡΠΌΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ (ΠΎΠ΄Π½ΠΈ property
ΡΠ΅Π³ΠΎ ΡΡΠΎΡΡ) ΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ΅ΠΌΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΏΠΈΠ΅Π½Ρ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ Ρ ΠΠΠ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π³ΡΠ³Π»ΠΈΡΡ Π²ΡΡ (ΠΈΠ»ΠΈ Π½Π°ΠΉΡΠΈ Π½Π° Ρ
Π°Π±ΡΠ΅), ΡΡΠΎ Π΅ΠΌΡ Π·Π°Ρ
ΠΎΡΠ΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ ΡΠΌΡΡΠ»Π° ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ, Ρ
ΠΎΡΡ ΡΡΠΎΠΈΡ ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΈΡΠΎΠ½ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ β ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠΌΠ½Π΅Π΅ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ (UPD: ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅), ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΏΠΈΡΠΎΠ½Π΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Ρ ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ
ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ°: private ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΡ (ΡΡΠΎ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ), Π° protected ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΠ΄ΡΡΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ (ΡΡΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ).
Π’Π΅ ΠΊΡΠΎ ΡΠΊΡΡΠ°Π΅Ρ ΠΏΠΎ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΡΠΈΠ²Π½Π΅ΡΡΠΈ Π² ΠΏΠΈΡΠΎΠ½ ΡΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΌΠ½Π΅ Π½Π°Π³ΡΠ³Π»ΠΈΠ»Π°ΡΡ ΠΏΠ°ΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² (lang, python-access), Π½ΠΎ Ρ ΠΈΡ
Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΠΈ Π½Π΅ ΠΈΠ·ΡΡΠ°Π».
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΈΠ½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² β ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΠΎ Π²ΡΡΠΊΠΈΡ
Π΄Π°Π½Π΄Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
, Π»ΠΈΡΠ½ΠΎ ΠΌΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° attrs, ΠΎΠ½Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΈΡΠΎΠ½ΠΈΡΠ΅ΡΠΊΠ°Ρ.
Π‘ΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ, ΡΡΠΎ ΡΠ°ΠΊ Π² ΠΏΠΈΡΠΎΠ½Π΅ Π²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΡΠΎ ΠΊΠ»Π°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ (Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ eval
) ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ type.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΡ (Π½Π° Ρ
Π°Π±ΡΠ΅) ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ (Ρ
Π°Π±Ρ).
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ β Π°ΡΡΠΈΠ±ΡΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΠΎ Π½Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅, Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΡΠΎ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ «Π·Π°ΡΠ΅Π½ΡΡΡΡΡ» (shadowing) β ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π° Π²ΠΎΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΎ, ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ:
cat class_attr.py
class MyClass:
storage = [7,]
def __init__(self, number):
self.number = number
obj = MyClass(1)
obj2 = MyClass(2)
obj.number = 5
obj.storage.append(8)
print(obj2.storage, obj2.number)
ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
python3 class_attr.py
[7, 8] 2
ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ β ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΈ obj
, Π° storage
ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ ΠΈ Π² obj2
Ρ.ΠΊ. ΡΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ (Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ number
) ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π½Π΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ, Π° ΠΊΠ»Π°ΡΡΡ.
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΈΡΠΎΠ½ Π½Π΅ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°Π΄Π°ΡΠ°ΡΡ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΡΠΈΡΡΠ½Π½ΡΡ ΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π½Π΅Π»ΡΠ·Ρ, ΠΏΡΠΎΡΡΠΎ Π΅ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Π²Π΅ΡΡ
Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π² ΠΏΠΈΡΠΎΠ½Π΅ Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ tuple, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π²ΡΠΎΠ΄Π΅ ΠΊΠΎΠ½ΡΠΈΠ³Π° ΠΈ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠΎ namedtuple, Π²ΠΏΠΎΠ»Π½Π΅ Ρ
ΠΎΡΠΎΡΠΈΠΉ Π²ΡΠ±ΠΎΡ, Ρ
ΠΎΡΡ ΠΎΠ½ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΈΠ»ΠΈΠΉ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Ρ dot-notation β Box (ΡΠΌ. ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ frozen_box).
ΠΡ Π° Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Ρ
ΠΎΡΠ΅ΡΡΡ ΡΠΊΠ°Π»ΡΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½ΠΈΠΌ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ «ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ» Ρ.Π΅. ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· mypy, ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ.
.sort() vs sorted()
Π ΠΏΠΈΡΠΎΠ½Π΅ Π΅ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ. ΠΠ΅ΡΠ²ΡΠΉ ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ .sort()
ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ (None) Ρ.Π΅. Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ:
my_list = my_list.sort()
ΠΡΠΎΡΠΎΠΉ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ sorted()
ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. ΠΠΎΠΌΡ Ρ
ΠΎΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΡ ΡΡΠΎΠΈΡ Π½Π°ΡΠ°ΡΡ Ρ SO.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΈΡΠΎΠ½Π° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΠ±ΠΎ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΈ ΡΡΡΠ°Π½Π½ΠΎΡΡΠ΅ΠΉ. ΠΡΠ°Π²Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΠΈ ΡΠ°ΠΊ, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, Π² ΠΈΡΠΎΠ³Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ Π²ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ (ΡΠΌ. Π΄Π°Π»Π΅Π΅ ΠΏΡΠΎ range), Π½ΠΎ Π²ΡΡ ΠΆΠ΅ Π΅ΡΡΡ ΠΈ ΡΡΡΠ°Π½Π½ΠΎΡΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ΄ΡΡΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ unittest Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠΈΡΠΎΠ½Ρ ΠΈ ΠΏΠΎΠΏΠ°Ρ ΠΈΠ²Π°Π΅Ρ Π΄ΠΆΠ°Π²ΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡ Π°Π²ΡΠΎΡ ΠΏΠΈΡΠΎΠ½Π°: «Eveybody is using py.test …». Π₯ΠΎΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ, ΠΏΡΡΡΡ ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ doctest ΠΈΠ΄ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅.
ΠΠ΄ΡΡΠΈΠΉ Π² ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ urllib Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠ°ΠΊ ΡΡΡΠΎΠ½Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ requests.
Π’Π° ΠΆΠ΅ ΠΈΡΡΠΎΡΠΈΡ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠΌΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ β ΠΈΠ΄ΡΡΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ argparse ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΠΠ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ·Π³Π°, Π° ΠΌΠΎΠ΄ΡΠ»Ρ docopt ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠΈΠΊΠ°ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ β ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π°Ρ ΡΠ°ΠΌΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ! Π₯ΠΎΡΡ, ΠΏΠΎ ΡΠ»ΡΡ Π°ΠΌ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° docopt ΠΈ Π΄Π»Ρ click ΠΎΡΡΠ°ΡΡΡΡ Π½ΠΈΡΠ°.
Π‘ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ ΡΠ°ΠΊΠΆΠ΅ β ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠ½ΡΠ» ΠΈΠ΄ΡΡΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ pdb ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΌΠ°ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ipdb, ΠΊΠΎΡΠΎΡΡΠΉ, Ρ ΠΌΠΎΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ΄ΡΠ»Ρ-ΠΎΠ±ΡΡΡΠΊΡ debug.
ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ import ipdb;ipdb.set_trace()
ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ import debug
, ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ see Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ° Π·Π°ΠΌΠ΅Π½Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ pickle Π΄Π΅Π»Π°ΡΡ dill, ΡΡΡ ΠΊΡΡΠ°ΡΠΈ ΡΡΠΎΠΈΡ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Π² Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Ρ.ΠΊ. Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ· Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² Π΅ΡΡΡ json (Π΄Π»Ρ REST) ΠΈ gRPC (Π΄Π»Ρ RPC).
ΠΠ° Π·Π°ΠΌΠ΅Π½Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ re Π΄Π΅Π»Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ regex ΡΠΎ Π²ΡΡΠΊΠΈΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ»ΡΡΠΊΠ°ΠΌΠΈ, Π²ΡΠΎΠ΄Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π°Π»Ρ \p{Cyrillic}
.
ΠΡΡΠ°ΡΠΈ, ΡΡΠΎ-ΡΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π»ΠΎΡΡ Π΄Π»Ρ ΠΏΠΈΡΠΎΠ½Π° Π²Π΅ΡΡΠ»ΠΎΠ³ΠΎ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° Π΄Π»Ρ ΡΠ΅Π³Π΅ΠΊΡΠΎΠ² ΠΏΠΎΡ
ΠΎΠΆΠ΅Π³ΠΎ Π½Π° ΠΏΠ΅ΡΠ»ΠΎΠ²ΡΠΉ.
ΠΠΎΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΡΠ΄Π΅Π»Π°Π» ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ in-place, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΈΠΊΡΠΈΡΡ ΠΊΡΠΈΠ²ΠΈΠ·Π½Ρ ΠΈ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΡΡ API ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ fileinput Π² ΡΠ°ΡΡΠΈ in place ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡ ΠΈ ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² Π΄ΡΠΌΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ, ΡΠ°Π· Π΄Π°ΠΆΠ΅ ΠΌΠ½Π΅ ΠΏΠΎΠΏΠ°Π»ΡΡ Π½Π΅ ΠΎΠ΄ΠΈΠ½, ΡΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅ Π±Π΄ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΈ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ Π²ΠΎ Π²ΡΡΠΊΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΡΠ΅ΠΊ ΡΠΈΠΏΠ° awesome, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Ρ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΠΏΠΈΡΠΎΠ½ΡΠΈΠΊΠ° Π΅ΡΡΡ ΡΡΠΉΠΊΠ° Π½Π° ΠΌΠ΅ΡΡ ΠΏΠΈΡΠΎΠ½ΠΈΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΊΡΡΠ°ΡΠΈ ΡΠ΅ΠΌΠ° Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ° β ΠΏΠΎ ΠΌΠΎΠΈΠΌ ΠΎΡΡΡΠ΅Π½ΠΈΡΠΌ (ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ Π½Π΅Ρ ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ) Π² ΠΏΠΈΡΠΎΠ½-ΠΌΠΈΡΠ΅ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² Π²ΡΡΠ΅ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ, ΠΈΠ±ΠΎ ΡΠ°ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠ΅ ΡΠΎΡΡΠΈΠ½Ρ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ , ΡΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡ
ΠΠΈΡΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΡΠΎΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π±Π΅Π· ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ.
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ, Π° ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΡΠ΅Π±ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΡΠΎ Π²Π°ΠΌ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Ρ multiprocessing.
Π Π΅ΡΠ»ΠΈ Π² Π²Π°ΡΠΈΡ
Π·Π°Π΄Π°ΡΠ°Ρ
ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ IO, ΡΠΎ ΠΏΠΈΡΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ°ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π½Π° Π²ΡΠ±ΠΎΡ, ΠΎΡ ΡΡΠ΅Π΄ΠΎΠ² ΠΈ gevent, Π΄ΠΎ asyncio.
ΠΡΠ΅ ΡΡΠΈ Π²Π°ΡΠΈΠ°Π½ΡΡ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (Ρ
ΠΎΡΡ ΡΡΠ΅Π΄Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΡΠ΅Π±ΡΡΡ), Π½ΠΎ Π΅ΡΡΡ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ asyncio ΠΏΠΎΡΠΈΡ
ΠΎΠ½ΡΠΊΡ Π²ΡΠ΄Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΡΠΊΠΈΠΌ ΠΏΠ»ΡΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠ° uvloop.
ΠΡΠ»ΠΈ ΠΊΡΠΎ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ» β Π² ΠΏΠΈΡΠΎΠ½Π΅ ΡΡΠ΅Π΄Ρ ΡΡΠΎ Π½Π΅ ΠΏΡΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΡΡΡ, Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠ΅Π½, ΡΡΠΎΠ±Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ GIL, Π½ΠΎ ΠΏΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΈ Π½Π΅Ρ ΡΠ°ΠΊΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΡΠ΅Π΄Ρ Π² ΠΏΠΈΡΠΎΠ½Π΅ (ΡΠΎΡΠ½Π΅Π΅ Π² CPython) Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ Π½Π΅ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΄ΡΠ΅, Π° Π·Π½Π°ΡΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΡΠ»ΡΡΠ°Π΅Π² ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½Π° Π½Π°ΡΡΠΎΡΡΠ°Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΠΎΠ² ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ.
ΠΠ½ΡΠ΅ ΡΡΡΠ°Π½Π½ΠΎΡΡΠΈ
Π ΠΏΠΈΡΠΎΠ½Π΅ a = a + b
Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ a += b
:
a = [1]
a = a + (2,3)
TypeError: can only concatenate list (not "tuple") to list
a += (2,3)
a
[1, 2, 3]
ΠΠ° Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡ Π½Π° SO ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΡΠ» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΎ ΡΠ°ΠΊ, Π² ΡΠΌΡΡΠ»Π΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΡΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π»ΠΈ, Π²ΡΠΎΠ΄Π΅ ΡΡΠΎ ΠΎΠΏΡΡΡ ΠΏΡΠΎ ΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ.
Π‘ΡΡΠ°Π½Π½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΡΡΠ°Π½Π½ΠΎΡΡΠΈ
ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, ΡΡΠΎ ΡΠΈΠΏ range Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΡΡ Π³ΡΠ°Π½ΠΈΡΡ, Π½ΠΎ ΠΏΠΎΡΠΎΠΌ Π΄ΠΎΠ±ΡΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Π» ΠΌΠ½Π΅ Π½Π΅ΡΡΡ Π³Π΄Π΅ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠΈΡΡΡΡ ΠΈ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π²ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ.
ΠΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ΅ΠΌΠ° ΡΡΠΎ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ (Ρ
ΠΎΡΡ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ), ΠΏΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΠ΅ ΠΈΠ·ΡΡΠ°Π»ΠΈ Π² ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΌ ΠΊΡΡΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ, ΡΠ°ΠΊ Π½Π° ΡΡΠΎ Π΅ΡΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠ΅ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ, ΠΎΡΡΡΠ»Π°Ρ ΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡΡΠ±ΠΎ Π³ΠΎΠ²ΠΎΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠ³ΠΎ, ΠΏΠΎ ΡΠΊΠΎΠ»ΡΠ½ΠΎΠΌΡ ΠΊΡΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ, ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° half up ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ half to even, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ IEEE 754.
Π’Π°ΠΊΠΆΠ΅ Ρ Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎΡΠ΅ΠΌΡ -22//10=-3
, Π° ΠΏΠΎΡΠΎΠΌ, Π΄ΡΡΠ³ΠΎΠΉ Π΄ΠΎΠ±ΡΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΡΡΠΎ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ, ΠΎΡΡΠ°ΡΠΎΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ, ΡΡΠΎ ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠΈΡΠ΅Π».
ACHTUNG! Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠΎ ΠΎΠΏΡΡΡ ΡΡΡΠ°Π½Π½ΠΎΡΡΡ ΠΈ Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΠΌ. ΡΠ΅ΠΉ ΡΡΠ΅Π΄.
ΠΡΠ»Π°Π΄ΠΊΠ° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
Π Π²ΠΎΡ ΡΡΡ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ Π² ΠΌΠΈΡΠ΅ ΠΏΠΈΡΠΎΠ½Π΅ Π½Π΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠΌΡ ΠΏΠ΅ΡΠ»ΠΎΠ²ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ Regexp::Debugger (Π²ΠΈΠ΄Π΅ΠΎΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ), ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π΅ΡΡΡ ΠΊΡΡΠ° ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²ΠΈΠ½Π΄ΠΎΠ²ΠΎΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π½ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π²ΡΡ Π½Π΅ ΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ»ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΈΠ±ΠΎ ΠΏΠΈΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅Π³ΡΠΊΡΡ Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΏΠ΅ΡΠ»ΠΎΠ²ΡΡ , Π½Π°ΠΏΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π½Π΅Π²Π»Π°Π΄Π΅ΡΡΠΈΡ ΠΏΠ΅ΡΠ»ΠΎΠ²ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ:
sudo apt install cpanminus
cpanm Regexp::Debugger
perl -I ~/perl5/lib/perl5/ -E "use Regexp::Debugger; 'ababc' =~ /(a|b) b+ c/x"
ΠΡΠΌΠ°Ρ Π΄Π°ΠΆΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡΠΉ Ρ ΠΏΠ΅ΡΠ»ΠΎΠΌ ΠΏΠΎΠΉΠΌΡΡ Π³Π΄Π΅ ΡΡΡ Π½Π°Π΄ΠΎ Π²ΠΏΠΈΡΠ°ΡΡ ΡΡΡΠΎΠΊΡ, Π° Π³Π΄Π΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, x
ΡΡΠΎ ΡΠ»Π°Π³ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΏΠΈΡΠΎΠ½Π½ΠΎΠΌΡ re.VERBOSE.
ΠΠ°ΠΆΠΈΠΌΠ°Π΅ΠΌ s
ΠΈ ΡΠ°Π³Π°Π΅ΠΌ ΠΏΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΌΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Π ΠΏΠΈΡΠΎΠ½Π΅ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ help, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΡΠ°Π²ΠΊΡ ΠΏΠΎ Π»ΡΠ±ΠΎΠΉ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (Π±Π΅ΡΡΡΡΡ ΠΈΠ· Π΅Ρ docstring’Π°), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
$ python3
>>> help(help)
Π½ΠΎ ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈ ΡΠ°ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ pydoc:
pydoc3 urllib.parse.urlparse
ΡΡΠΈΠ»ΠΈΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²Π°ΠΌ ΠΈ Π΄Π°ΠΆΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Ρ html Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π».