На Ρ‡Π΅ΠΌ основан python

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠ²?

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ это довольно Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ заявлСниС. Π§Ρ‚ΠΎ я имСю Π²Π²ΠΈΠ΄Ρƒ ΠΏΠΎΠ΄ β€œΠŸΠΈΡ‚ΠΎΠ½ΠΎΠΌβ€? ΠœΠΎΠΆΠ΅Ρ‚, абстрактный интСрфСйс ΠŸΠΈΡ‚ΠΎΠ½Π°? Или CPython, распространСнная рСализация ΠŸΠΈΡ‚ΠΎΠ½Π° (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΏΠΎ названию Cython)? Или я имСю Π²Π²ΠΈΠ΄Ρƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ совсСм ΠΈΠ½ΠΎΠ΅? ΠœΠΎΠΆΠ΅Ρ‚, я косвСнно ΡΡΡ‹Π»Π°ΡŽΡΡŒ Π½Π° Jython, ΠΈΠ»ΠΈ IronPython, ΠΈΠ»ΠΈ PyPy. Или ΠΌΠΎΠΆΠ΅Ρ‚ я отвлСкся Ρ‚Π°ΠΊ сильно, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΎ RPython ΠΈΠ»ΠΈ RubyPython (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ).

НС смотря Π½Π° ΡΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒ Π² названиях ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ совсСм Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ (ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½Ρ‹ΠΌΠΈ способами)

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠΌ я столкнулся с ΠΊΡƒΡ‡Π΅ΠΉ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ *ython. Но лишь Π½Π΅Π΄Π°Π²Π½ΠΎ я ΡƒΠ΄Π΅Π»ΠΈΠ» врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ собой ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ (каТдая ΠΏΠΎ-своСму) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

Π’ этом постС я Π½Π°Ρ‡Π½Ρƒ с нуля ΠΈ ΠΏΡ€ΠΎΠΉΠ΄ΡƒΡΡŒ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ рСализациям ΠŸΠΈΡ‚ΠΎΠ½Π°, Π° Π·Π°ΠΊΠΎΠ½Ρ‡Ρƒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² PyPy, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ языка.

ВсС начинаСтся с понимания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅ΠΌ Π½Π° самом Π΄Π΅Π»Π΅ являСтся β€œΠŸΠΈΡ‚ΠΎΠ½β€.

Если Ρƒ вас Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ машинного ΠΊΠΎΠ΄Π°, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот Ρ€Π°Π·Π΄Π΅Π».

ΠŸΠΈΡ‚ΠΎΠ½ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ?

Π­Ρ‚ΠΎ распространСнный источник нСпонимания срСди Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠŸΠΈΡ‚ΠΎΠ½Π°.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ: β€œΠŸΠΈΡ‚ΠΎΠ½β€ – это интСрфСйс. БущСствуСт спСцификация, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠŸΠΈΡ‚ΠΎΠ½, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ сСбя вСсти (Ρ‡Ρ‚ΠΎ справСдливо для любого интСрфСйса). И сущСствуСт нСсколько ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΉ (Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ справСдливо для любого интСрфСйса).

Π’Ρ‚ΠΎΡ€ΠΎΠ΅: β€œΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉβ€ ΠΈ β€œΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉβ€ это свойства ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π½Π΅ интСрфСйса.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ сам вопрос Π½Π΅ совсСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½.

Π’ случаС с самой распространСнной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ (CPython: написанный Π½Π° C, часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ просто β€œPython”, ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, Ссли понятия Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎ Ρ‡Π΅ΠΌ я Ρ‚ΠΎΠ»ΠΊΡƒΡŽ) ΠΎΡ‚Π²Π΅Ρ‚: ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ, с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ компиляциСй. CPython ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚* исходный ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ этот Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, запуская Π΅Π³ΠΎ Π² процСссС.

* Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: это Π½Π΅ совсСм β€œΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡβ€ Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΌ смыслС. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΌΡ‹ считаСм, Ρ‡Ρ‚ΠΎ β€œΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡβ€ это конвСртация ΠΈΠ· высокоуровнСвого языка Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ – Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€ΠΎΠ΄Π΅ это β€œΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡβ€.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ этот ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ нас Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π‘Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ (ΠΈΠ»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ) ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, Π»Π΅Π³Ρ‡Π΅ всСго Π΅Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

β€” CΠΈ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ впослСдствии запускаСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ процСссором. КаТдая инструкция заставляСт процСссор ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ дСйствия.
β€” Java компилируСтся Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ впослСдствии запускаСтся Π½Π° Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java (Java Virtual Machine, JVM), абстрактном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. КаТдая инструкция обрабатываСтся JVM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствуСт с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ.

Бильно упрощая: ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Π½ΠΎ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅ пСрСносим ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½.

ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Π½Π° всСх ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΠΎΠ΄ Π²Π°ΡˆΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ CPython, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1. CPython ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ваш исходный ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄.
2. Π­Ρ‚ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ запускаСтся Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС CPython.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹: Jython, IronPython ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅

Как я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Π²Ρ‹ΡˆΠ΅, Ρƒ ΠŸΠΈΡ‚ΠΎΠ½Π° сущСствуСт нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈ-лось Π²Ρ‹ΡˆΠ΅, самой популярной являСтся CPython. Π­Ρ‚Π° вСрсия ΠŸΠΈΡ‚ΠΎΠ½Π° написана Π½Π° C ΠΈ считаСтся ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ β€œΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽβ€.

Но ΠΊΠ°ΠΊ насчСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²? Одна ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²ΠΈΠ΄Π½Ρ‹Ρ… это Jython, рСализация ΠŸΠΈΡ‚ΠΎΠ½Π° Π½Π° Java, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ JVM. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ CPython Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ для запуска Π½Π° CPython VM, Jython Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Java для запуска Π½Π° JVM (это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ гСнСрируСтся ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java).

На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ основан python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ основан python. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python

β€œΠ—Π°Ρ‡Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ?”, спроситС Π²Ρ‹. Ну, для Π½Π°Ρ‡Π°Π»Π°, Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ладят с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

CPython ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ написаниС C-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ для ΠΊΠΎΠ΄Π° Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠ½ запускаСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ CΠΈ. Jython Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π½Π° Java: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Java-классы Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий, призывая ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ваши Java-классы ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Jython. (Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π΄ΡƒΠΌΠ°Π»ΠΈ ΠΎΠ± этом Π²ΡΠ΅Ρ€ΡŒΠ΅Π·, это довольно Π±Π΅Π·ΡƒΠΌΠ½ΠΎ. ΠœΡ‹ Π΄ΠΎΠΆΠΈΠ»ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ языки ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄Π½Ρƒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. Как Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ» Rostin, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄ Π½Π° Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅ с CΠΈ появились довольно Π΄Π°Π²Π½ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это Π½Π΅ совсСм Π½ΠΎΠ²ΠΈΠ½ΠΊΠ°. Но это всС ΠΆΠ΅ ΠΊΡ€ΡƒΡ‚ΠΎ.)

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π²ΠΎΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Jython:

[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_51
>>> from java.util import HashSet
>>> s = HashSet(5)
>>> s.add(«Foo»)
>>> s.add(«Bar»)
>>> s
[Foo, Bar]

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Jython: Java :: IronPython: C#. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классы C# Π² ΠΊΠΎΠ΄ IronPython ΠΈ классы Java Π² ΠΊΠΎΠ΄ Jython, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ основан python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ основан python. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ…ΠΎΡ‚ΡŒ это ΠΈ Π½Π΅ станСт ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ эти Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ касаСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ способов ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅. Однако эти отличия, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅-Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΎΠ½ΠΈ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚ ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ·-Π·Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, IronPython ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ строки Unicode ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ; ΠΎΠ΄Π½Π°ΠΊΠΎ CPython ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ASCII Π² вСрсиях 2.x (выдавая ΠΎΡˆΠΈΠ±ΠΊΡƒ UnicodeEncodeError для Π½Π΅-ASCII символов), ΠΈ ΠΏΡ€ΠΈ этом ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ символы Unicode ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² вСрсиях 3.x.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π½Π° Π»Π΅Ρ‚Ρƒ (Just-in-Time Compilation): PyPy ΠΈ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Π΅ΡΡ‚ΡŒ имплСмСнтация ΠŸΠΈΡ‚ΠΎΠ½Π°, написанная Π½Π° Π‘ΠΈ, Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° – Π½Π° Java, ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Π½Π° C#. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ шаг: имплСмСнтация ΠŸΠΈΡ‚ΠΎΠ½Π°, написанная на… ΠŸΠΈΡ‚ΠΎΠ½Π΅. (ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚, Ρ‡Ρ‚ΠΎ это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ°Π½Ρ‡ΠΈΠ²ΠΎ).

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΠ²Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ. Для Π½Π°Ρ‡Π°Π»Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π½Π° Π»Π΅Ρ‚Ρƒ (just-in-time ΠΈΠ»ΠΈ JIT).

JIT. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈ ΠΊΠ°ΠΊ

Напомню, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°. Ну, Π° Ρ‡Ρ‚ΠΎ, Ссли Π±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄? ΠŸΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ β€œΠ·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒβ€ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ†Π΅Π½Ρƒ (ΠΈΠ½Ρ‹ΠΌΠΈ словами: врСмя) Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°, Π½ΠΎ Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС, Ρ‚ΠΎ это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ! Π­Ρ‚ΠΈΠΌ ΠΈ мотивируСтся JIT-компиляция, гибридная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°, которая совмСщаСт Π² сСбС прСимущСства ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎ-Ρ€ΠΎΠ² ΠΈ компиляторов. Π’ Π΄Π²ΡƒΡ… словах – JIT стараСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ систСму ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ.

НапримСр, Π²ΠΎΡ‚ распространСнный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ JIT:

Π’ этом вся ΡΡƒΡ‚ΡŒ PyPy: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JIT Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ (Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ). ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ†Π΅Π»ΠΈ: PyPy Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Ρƒ с нСбольшим количСством памяти ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ stackless (ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ стСка Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² языка Π‘ΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ собствСнного стСка). Но JIT это Π³Π»Π°Π²Π½ΠΎΠ΅ прСимущСство. Π’ срСднСм Π½Π° основС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… тСстов, Ρ„Π°ΠΊΡ‚ΠΎΡ€ ускорСния составляСт 6.27. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· схСмы ΠΎΡ‚ PyPy Speed Center:

На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ основан python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ основан python. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python

Π’ PyPy слоТно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ

Π£ PyPy Π΅ΡΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π», ΠΈ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ совмСстим с CPython (Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π° Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Flask, Django, ΠΈ Ρ‚.Π΄.).

Но с PyPy Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹. (ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, это бСссмыслСнноС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ PyPyPy…). По ΠΌΠΎΠ΅ΠΌΡƒ мнСнию основная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ PyPy ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ являСтся:

1. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠŸΠΈΡ‚ΠΎΠ½Π°, написанным Π½Π° RPython (Π½Π΅ Python (я ΠΎΠ±ΠΌΠ°Π½ΡƒΠ» вас Π΄ΠΎ этого)). RPython это подмноТСство Python со статичной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’ Python, вСсти Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ бСсСды ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… β€œΠ² Ρ†Π΅Π»ΠΎΠΌ нСвозмоТно” ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ слоТно? рассмотритС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

x = random.choice([1, «foo»])

это ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Python (спасибо Ademanβ€˜Ρƒ). Какой Ρ‚ΠΈΠΏ Ρƒ x? Как ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ Ρ„ΠΎΡ€ΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ?). Π’ RPython ΠΌΡ‹ ΠΆΠ΅Ρ€Ρ‚Π²ΡƒΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ Π²Π·Π°ΠΌΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ Π½Π° RPython Π² Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ JIT. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся Π‘ΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ компилятор RPython-Π²-Π‘ΠΈ, Π½ΠΎ Π² качСствС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ JVM ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Для простоты описания, я Π±ΡƒΠ΄Ρƒ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… PyPy (1) ΠΈ PyPy (2).

Π—Π°Ρ‡Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ эти Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ – Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅? Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом Ρ‚Π°ΠΊ: PyPy (1) это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, написанный Π½Π° RPython. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ Π±Π΅Ρ€Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ сам ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ (написанный Π½Π° RPython) ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Пи-Ρ‚ΠΎΠ½Π°, Π²Π΅Ρ€Π½ΠΎ?

Π˜Ρ‚Π°ΠΊ, ΠΌΠΎΠΆΠ½ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CPython Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. Но это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ слишком быстро.

ВмСсто этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PyPy (2) (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ RPython Toolchain) Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ PyPy Π² ΠΊΠΎΠ΄ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C, JVM, ΠΈΠ»ΠΈ CLI) для запуска Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ машинС, с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ JIT. Π­Ρ‚ΠΎ волшСбно: PyPy динамичСски добавляСт JIT ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ, гСнСрируя собствСнный компилятор! (ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, это Π±Π΅Π·ΡƒΠΌΠΈΠ΅: ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, добавляя Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ компилятор).

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ исходный ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ JIT. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ! ΠŸΠΎΠ½ΡΡ‚ΡŒ слоТновато, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, эта схСма ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚:

На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ основан python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ основан python. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ: настоящая красота PyPy Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сСбС ΠΊΡƒΡ‡Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠŸΠΈΡ‚ΠΎΠ½Π° Π½Π° RPython Π½Π΅ Π²ΠΎΠ»Π½ΡƒΡΡΡŒ ΠΎ JIT (Π½Π΅ считая ΠΏΠ°Ρ€Ρ‹ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ). ПослС этого PyPy Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ для нас JIT, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ RPython Toolchain/PyPy (2).

На самом Π΄Π΅Π»Π΅, Ссли ΠΊΠΎΠΏΠ½ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ, тСорСтичСски ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ любого языка, Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² PyPy ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ JIT для этого языка. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ PyPy концСнтрируСтся Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ самого ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, Π° Π½Π΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚.

Π’ качСствС отступлСния я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сам JIT ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ восхититСлСн. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ β€œΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅β€ (tracing), которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π£Π·Π½Π°Ρ‚ΡŒ большС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· этой лСгкодоступной ΠΈ ΠΎΡ‡Π΅Π½ΡŒ интСрСсной ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ: ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PyPy-компилятор RPython-Π²-Π‘ΠΈ (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ΠΏΠ»Π°Ρ‚-Ρ„ΠΎΡ€ΠΌΡƒ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° RPython ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚Π°Ρ‚ΠΎΡ€ PyPΡƒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΡ‡Π΅ΠΌΡƒ всС это Ρ‚Π°ΠΊ Π²ΠΎΡΡ…ΠΈΡ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит Π³Π½Π°Ρ‚ΡŒΡΡ Π·Π° этой Π±Π΅Π·ΡƒΠΌΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ? По-ΠΌΠΎΠ΅ΠΌΡƒ, АлСкс Π“Π΅ΠΉΠ½ΠΎΡ€ объяснил это ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π² своСм Π±Π»ΠΎΠ³Π΅: β€œ[Π—Π° PyPy Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅] ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ [ΠΎΠ½] Π±ΠΎΠ»Π΅Π΅ быстрый, Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΈ являСтся Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для развития ΠŸΠΈΡ‚ΠΎΠ½Π°β€.

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Π΄Ρ€ΡƒΠ³ΠΈΠ΅ названия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ

Python 3000 (Py3k): Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Python 3.0, основной Ρ€Π΅Π»ΠΈΠ· ΠŸΠΈΡ‚ΠΎΠ½Π° с ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ появился Π² 2008. Π³ΠΎΠ΄Ρƒ. Команда Py3k прСдсказала, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии понадобится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΆΠΈΡ‚ΡŒΡΡ. И Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ (Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π½Π°Π΄ΡƒΠΌΠ°Π½Π½ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅) Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python 2.x, люди всС большС Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎ Py3k.

Numba: β€œΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ just-in-time компилятор”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт JIT Π² снабТСнный примСчаниями ΠΊΠΎΠ΄ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅. ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π²Ρ‹ Π΄Π°Π΅Ρ‚Π΅ Π΅ΠΌΡƒ подсказки, Π° ΠΎΠ½ ускоряСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ части вашСго ΠΊΠΎΠ΄Π°. Numba являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ дистрибутива Anaconda Π½Π°Π±ΠΎΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

IPython: сильно отличаСтся ΠΎΡ‚ всСго, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ обсудили. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ срСда для ΠŸΠΈΡ‚ΠΎΠ½Π°. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ, с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GUI-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Psyco: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠŸΠΈΡ‚ΠΎΠ½Π°, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠŸΠΈΡ‚ΠΎΠ½Π° Π² области JIT. Π”Π°Π²Π½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ β€œΠ½Π΅ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΈ мСртвый”. Π“Π»Π°Π²Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Psyco Армин Π ΠΈΠ³ΠΎ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ PyPy.

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ языкам
JavaScript Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠΠ°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΠΌ. Н. Π­. Π‘Π°ΡƒΠΌΠ°Π½Π°
Bauman National Library

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты

Python

На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ основан python. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ основан python. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ основан python

Python (произносится [ ˈpaΙͺ.ΞΈΙ™n ] )являСтся ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, высокого уровня. Π•Π³ΠΎ философия Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π° Π΅Π³ΠΎ синтаксис позволяСт программистам, Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ понятия Π² мСньшСм количСствС строк ΠΊΠΎΠ΄Π°, Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ Π‘ ++ ΠΈΠ»ΠΈ Java. Π―Π·Ρ‹ΠΊ обСспСчиваСт конструкции, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΈΠ΅ Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΌΠ°Π»Ρ‹Ρ… ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°Ρ….

Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ программирования, Π² Ρ‚ΠΎΠΌ числС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹Ρ… стилСй. Он ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ систСму Ρ‚ΠΈΠΏΠΎΠ² ΠΈ автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈ Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ Python ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ для установки Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, Ρ‡Ρ‚ΠΎ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Python Π½Π° самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… систСм. ИспользованиС сторонних инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ py2exe ΠΈΠ»ΠΈ Pyinstaller. Python ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ собран Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ» для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· самых популярных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм, Ρ‡Ρ‚ΠΎ позволяСт распространСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Python основС для использования Π½Π° этих срСдах, Π½Π΅ трСбуя установка ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python.

CPython, ссылка рСализация Python, являСтся свободноС ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ модСль развития ΠΎΠ±Ρ‰ΠΈΠ½, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π΅Π³ΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. CPython управляСтся нСкоммСрчСской ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Python Software Foundation.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

О происхоТдСнии Python, Π’Π°Π½ Россум написал Π² 1996 Π³ΠΎΠ΄Ρƒ:

Python 2.0 Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ 16 октября 2000 Π³ΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π² Ρ‚ΠΎΠΌ числС Ρ†ΠΈΠΊΠ»Π° обнаруТСния сборщиком мусора ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Unicode. Π’ этом выпускС процСсс развития Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΈ стал Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ ΠΈ сообщСство ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π»ΠΎ.

Python 3.0 (Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Python 3000 ΠΈΠ»ΠΈ py3k), Ρ„Π°Π²ΠΎΡ€ΠΈΡ‚, Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ-нСсовмСстимыС Ρ€Π΅Π»ΠΈΠ· Π±Ρ‹Π» Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π½Π° 3 дСкабря 2008 Π³ΠΎΠ΄Π°, послС Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° тСстирования. МногиС ΠΈΠ· Π΅Π³ΠΎ Π³Π»Π°Π²Π½Ρ‹Ρ… особСнностСй Π±Ρ‹Π»ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости Python 2.6 ΠΈ 2.7.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΈ философия

Python являСтся языком программирования ΠΌΡƒΠ»ΡŒΡ‚ΠΈ-ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ структурного программирования ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚, ΠΈ Π΅ΡΡ‚ΡŒ ряд особСнностСй языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ аспСктно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Π² Ρ‚ΠΎΠΌ числС ΠΏΡƒΡ‚Π΅ΠΌ мСтапрограммирования ΠΈ магичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²). МногиС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π² Ρ‚ΠΎΠΌ числС Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Ρƒ ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° программирования.

Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ сочСтаниС подсчСта ссылок ΠΈ Ρ†ΠΈΠΊΠ»Π° обнаруТСния сборщика мусора для управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Π’Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Python являСтся динамичСским Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ (ΠΏΠΎΠ·Π΄Π½Π΅Π΅ связываниС), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ связываСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π”ΠΈΠ·Π°ΠΉΠ½ Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π² традициях Lisp. Π―Π·Ρ‹ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ map(), reduce() ΠΈ filter( ) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ; постиТСний для списков, словарСй ΠΈ мноТСств,; ΠΈ выраТСния Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° модуля (itertools ΠΈ functools), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, заимствованныС ΠΈΠ· Haskell ΠΈ Standard ML.

Π―Π΄Ρ€ΠΎ философия языка ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ «PEP 20 (Π”Π·Π΅Π½ Python)», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π°Ρ„ΠΎΡ€ΠΈΠ·ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для встраивания Π² ядро языка, Python Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ максимально Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌΠΈ. Python Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ встроСн Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ интСрфСйсС. Π­Ρ‚Π° конструкция нСбольшого языка, основной с большой стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ° Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π’Π°Π½ Россум с самого Π½Π°Ρ‡Π°Π»Π° ΠΈΠ·-Π·Π° Π΅Π³ΠΎ разочарования с ABC (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Π΅ суТдСния).

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Ρ Π²Ρ‹Π±ΠΎΡ€ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, философии Python ΠΎΡ‚Π²Π΅Ρ€Π³Π°Π΅Ρ‚ Π±ΡƒΠΉΠ½Ρ‹ΠΉ синтаксис, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Perl, Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Ρ€Π΅Π΄ΠΊΠΎΠ³ΠΎ, ΠΌΠ΅Π½Π΅Π΅ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½ΡƒΡŽ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ. Как АлСкс ΠœΠ°Ρ€Ρ‚Π΅Π»Π»ΠΈ выразился: «Π”ля Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΆΠ΅ ΡƒΠΌΠ½Ρ‹ΠΉ Π½Π΅ считаСтся ΠΊΠΎΠΌΠΏΠ»ΠΈΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π΅ Python.» Ѐилософия ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π° ΠΎΡ‚Π²Π΅Ρ€Π³Π°Π΅Ρ‚ Perl «Π•ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ способа ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это» ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ языков Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ » Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это «.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка Python ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚Π²Π΅Ρ€Π³Π°ΡŽΡ‚ ΠΏΠ°Ρ‚Ρ‡ΠΈ для нСкритичСских частСй CPython, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² скорости Π½Π° стоимости ясности. Когда Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, программист ΠŸΠΈΡ‚ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, написанныС Π½Π° языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C, ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PyPy, компилятор Ρ‚ΠΎΡ‡Π½ΠΎ Π² срок. CPython Ρ‚Π°ΠΊΠΆΠ΅ доступСн, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ сцСнарий Python Π² Π‘ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ прямоС API C-уровня ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python.

Π’Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Python инстСрСсным Π² использовании. Π­Ρ‚ΠΎ нашло своС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² происхоТдСнии названия, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит ΠΎΡ‚ Monty Python, ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ³Ρ€ΠΈΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΈ справочным ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ использованиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ spam ΠΈ eggs вмСсто стандартных Foo ΠΈ bar.

ΠžΠ±Ρ‰ΠΈΠΉ Π½Π΅ΠΎΠ»ΠΎΠ³ΠΈΠ·ΠΌ Π² сообщСствС Python являСтся Π²Π΅Ρ‰ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, связанных с стилСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π²Π΅Ρ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Python ΠΈΠ΄ΠΈΠΎΠΌΡ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ это СстСствСнно ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ свободноС Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ языком, Ρ‡Ρ‚ΠΎ ΠΎΠ½ соотвСтствуСт философии ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΠ° Π°ΠΊΡ†Π΅Π½Ρ‚ΠΎΠΌ ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π° Π½Π° Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ этого, ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π³Ρ€ΡƒΠ±ΠΎΠ΅ транскрипции ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка программирования называСтся unpythonic.

Π›ΡŽΠ΄ΠΈ ΠΈ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΈ Python, особСнно Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ освСдомлСнными ΠΈΠ»ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌΠΈ-часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Pythonists, Pythonistas ΠΈ Pythoneers.

Бинтаксис ΠΈ сСмантика

Python ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ языком. Он ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΡƒΡŽ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ английскиС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°ΠΊΠΈ прСпинания. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Python ΠΈΠΌΠ΅Π΅Ρ‚ мСньшСС число синтаксичСских ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ особых случаСв, Ρ‡Π΅ΠΌ C ΠΈΠ»ΠΈ Pascal.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ отступы ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Π° Π½Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΈΠ»ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈ; Π­Ρ‚Π° функция Ρ‚Π°ΠΊΠΆΠ΅ называСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Π½Π΅ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ. Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ отступа ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ послС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… заявлСний; ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ отступа ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Набор ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² достаточно Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Π½. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

Одной ΠΈΠ· интСрСсных синтаксичСских особСнностСй языка являСтся Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ отступов (ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈΠ»ΠΈ табуляций), поэтому Π² Python ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ скобки begin/end, ΠΊΠ°ΠΊ Π² языкС Паскаль, ΠΈΠ»ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΊΠ°ΠΊ Π² Π‘ΠΈ. Π’Π°ΠΊΠΎΠΉ Β«Ρ‚Ρ€ΡŽΠΊΒ» позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство строк ΠΈ символов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΏΡ€ΠΈΡƒΡ‡Π°Π΅Ρ‚ ΠΊ Β«Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌΡƒΒ» ΡΡ‚ΠΈΠ»ΡŽ программирования. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² тСкстС. НСкоторым Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ.

ВыраТСния

НСкоторыС выраТСния Python ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ‚Π°ΠΊΠΈΡ… языках, ΠΊΠ°ΠΊ C ΠΈ Java, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ для Python:

Π’ Python, Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ выраТСниями ΠΈ заявлСний ТСстко ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… языков, ΠΊΠ°ΠΊ Common Lisp, Scheme, ΠΈΠ»ΠΈ Ruby. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. НапримСр:

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΡ‚ΠΈΠ½ΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ΠΈΠΏ ограничСния Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя компиляции; скорСС, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ подходящСго Ρ‚ΠΈΠΏΠ°. НСсмотря Π½Π° Ρ‚ΠΎ, динамичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…, Python сильно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…, Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ числа Π² строкС), Π° Π½Π΅ ΠΌΠΎΠ»Ρ‡Π° ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ….

Python позволяСт программистам ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ свои собствСнныС Ρ‚ΠΈΠΏΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. НовыС экзСмпляры классов построСны ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° класса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SpamClass() ΠΈΠ»ΠΈ EggsClass() ), Π° сами классы ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами type мСтаклассов (сама экзСмпляр сСбС), Ρ‡Ρ‚ΠΎ позволяСт мСтапрограммирования ΠΈ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Π”ΠΎ вСрсии 3.0, Python Π±Ρ‹Π»ΠΎ Π΄Π²Π° Π²ΠΈΠ΄Π° классов: «ΡΡ‚Π°Ρ€Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ» ΠΈ «ΠΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ» [61] классы Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ стилС Π±Ρ‹Π»ΠΈ устранСны Π² Python 3.0, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ всС классы Π½ΠΎΠ²ΠΎΠ³ΠΎ стиля.. Π’ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… ΠΎΡ‚ 2,2 Π΄ΠΎ 3,0, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΎΠ±Π° Π²ΠΈΠ΄Π° классов. Бинтаксис ΠΎΠ±ΠΎΠΈΡ… стилСй Ρ‚ΠΎ ΠΆΠ΅ самоС, с Ρ‚ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, являСтся Π»ΠΈ object класса Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚, прямо ΠΈΠ»ΠΈ косвСнно (всС классы Π½ΠΎΠ²ΠΎΠ³ΠΎ стиля Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ object ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами type ).

«Wikipedia» «»»Spanning multiple lines»»»

bytearrayMutableΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚bytearray(b’Some ASCII’)

bytearray(b»Some ASCII») bytearray([119, 105, 107, 105])

bytesImmutableΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚.b’Some ASCII’

b»Some ASCII» bytes([119, 105, 107, 105])

listMutableБписки, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹[4.0, ‘string’, True]tupleImmutableΠœΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.(4.0, ‘string’, True)setMutableНСупорядочСнный Π½Π°Π±ΠΎΡ€, Π½Π΅ содСрТит Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹.frozensetImmutableНСупорядочСнный Π½Π°Π±ΠΎΡ€, Π½Π΅ содСрТит Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹.frozenset([4.0, ‘string’, True])dictMutableАссоциативный массив (ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ) ΠΈΠ· ΠΏΠ°Ρ€Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ значСния). ΠšΠ»ΡŽΡ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°intImmutableЧисло Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°42floatImmutableЧисло с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ (Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ опрСдСляСтся систСмой).3.1415927complexImmutableКомплСксноС число с Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΌΠ½ΠΈΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ.3+2.7jboolImmutableЛогичСская пСрСмСннаяTrue

ellipsisΠœΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ для использования Π² качСствС индСкса Π² массивах NumPy..

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Python ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ упоминаСтся ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ… Π² языкС Python, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ инструмСнты подходят для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ΅ ΠΈ Π±Ρ‹Π» описан ΠΊΠ°ΠΊ «Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ…» философии Python. Для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄, большоС количСство стандартных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MIME ΠΈ HTTP) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. ΠœΠΎΠ΄ΡƒΠ»ΠΈ для создания графичСских ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ рСляционных Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ псСвдослучайных чисСл, Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ΅ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π½Π°ΠΊΠΎΠ² послС запятой, манипулирования рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ тСстированиС, Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹.

НСкоторыС части стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚Ρ‹ тСхничСскими (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСализация wsgiref WSGI ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ PEP 333), Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ. Они Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΈΡ… ΠΊΠΎΠ΄Ρƒ, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ тСстов (ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ являСтся кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ Python, Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСписанныС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ.

Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ для запуска Python ΠΈΠ»ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Python Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Blender 2.49, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, опускаСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

По ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½Π° ΡΠ½Π²Π°Ρ€ΡŒ 2016 Π³ΠΎΠ΄Π°, ΠŸΠΈΡ‚ΠΎΠ½ индСкс ΠŸΠ°ΠΊΠ΅Ρ‚, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ стороннСго ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для Python, содСрТит Π±ΠΎΠ»Π΅Π΅ 72000 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, Π² Ρ‚ΠΎΠΌ числС:

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

ЭмпиричСскиС исслСдования ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, языки сцСнариСв (Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Python) Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ языки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, C ΠΈ Java) для Π·Π°Π΄Π°Ρ‡ΠΈ программирования с участиСм строками ΠΈ поиск Π² словарС. ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти часто Π±Ρ‹Π» «Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Java, Π° Π½Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΡƒΠΆΠ΅, Ρ‡Π΅ΠΌ Π‘ ΠΈΠ»ΠΈ Π‘ ++».

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π² использовании сопряТСния ΠΌΠ΅ΠΆΠ΄Ρƒ Python ΠΈ C ++ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ, Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

ΠšΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Python Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя Google, Yahoo!, CERN, NASA, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ILM, ΠΈ ITA.

Python ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС скриптового языка для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mod_wsgi для Π²Π΅Π±-сСрвСра Apache. Π‘ Π²Π΅Π±-сСрвСра шлюза интСрфСйса, стандартный API, Ρ€Π°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ эти прилоТСния. Π Π°ΠΌΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle ΠΈ Zope ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈ обслуТивании слоТных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Pyjamas ΠΈ IronPython ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ клиСнтской части ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ajax-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. SQLAlchemy ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π² качСствС прСобразоватСля Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Twisted являСтся основой для программирования связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Dropbox.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠ°ΠΊ NumPy, SciPy ΠΈ Matplotlib ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python Π² Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… вычислСний, со спСциализированными Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ BioPython ΠΈ Astropy обСспСчСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ. Astropy являСтся матСматичСскоС обСспСчСниС с Β«Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Β» программируСтся Π² Python: Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ аспСкты ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Π² Ρ‚ΠΎΠΌ числС Π°Π»Π³Π΅Π±Ρ€Ρ‹, ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΈΠΊΠΈ, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Ρ‚Π΅ΠΎΡ€ΠΈΠΈ чисСл, ΠΈ исчислСния.

ΠŸΠΈΡ‚ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² искусствСнных Π·Π°Π΄Π°Ρ‡ Ρ€Π°Π·Π²Π΅Π΄ΠΊΠΈ. Π² качСствС скриптового языка с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, простой синтаксис ΠΈ Π±ΠΎΠ³Π°Ρ‚Ρ‹Ρ… инструмСнтов ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста, Python часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π·Π°Π΄Π°Ρ‡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ СстСствСнного языка.

МногиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Python Π² качСствС стандартного ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°; языковыС поставляСтся с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ дистрибутивов Linux, AmigaOS 4, FreeBSD, NetBSD, OpenBSD ΠΈ OS X, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Ряд дистрибутивов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инсталляторов, написанных Π½Π° Python: Ubuntu ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ установщик Ubiquity, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Red Hat Linux Fedora ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ установки Anaconda. Gentoo Linux ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Python Π² своСй систСмС управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, Portage.

ΠŸΠΈΡ‚ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π» ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ бСзопасности, Π² Ρ‚ΠΎΠΌ числС Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ эксплойтов.

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Sugar для One Laptop Per Child XO, Π² настоящСС врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² Sugar Labs, написана Π² Python.

Π‘ΠΈΠ½Π³Π» Π±ΠΎΡ€Ρ‚ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Raspberry Pi ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ принял Python Π² качСствС своСй основной язык ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ программирования.

LibreOffice Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Python ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Java с Python. Python скриптов ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ основной ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, начиная с вСрсии 4.0 ΠΎΡ‚ 7 фСвраля 2013 Π³ΠΎΠ΄Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *