ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваши инструкции, написанныС Π½Π° Python, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ выполняСт ΠΈΡ…. По сути ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ слой ΠΌΠ΅ΠΆΠ΄Ρƒ вашим исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ.

БущСствуСт 2 Ρ‚ΠΈΠΏΠ° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ²:

Как CPython выполняСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ «ΠŸΠΈΡ‚ΠΎΠ½Π°» выполняСт Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ поэтапно.

Π­Ρ‚Π°ΠΏ #1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

ПослС запуска вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Python-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ΄, провСряСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ синтаксис. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ошибки ΠΎΠ½ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ останавливаСтся ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ошибкС.

Помимо этого, происходит ряд ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов:

Π­Ρ‚Π°ΠΏ #2. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ транслируСт (ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚) исходныС инструкции вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅, платформонСзависимоС прСдставлСниС исходного тСкста). Вакая трансляция Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ скорости – Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ выполняСтся Π² Ρ€Π°Π·Ρ‹ быстрСС, Ρ‡Π΅ΠΌ исходныС инструкции.

Π­Ρ‚Π°ΠΏ #3. ВыполнСния

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ скомпилирован, ΠΎΠ½ отправляСтся Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Python (PVM). Π—Π΄Π΅ΡΡŒ выполняСтся Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π½Π° PVM. Если Π²ΠΎ врСмя этого выполнСния Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ останавливаСтся с сообщСниСм ΠΎΠ± ошибкС.

PVM являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Python-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. По сути это просто большой Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ инструкций Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π΅ ΠΈ выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π‘Python

CPython являСтся стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, созданныС для спСцифичСских Ρ†Π΅Π»Π΅ΠΉ ΠΈ Π·Π°Π΄Π°Ρ‡.

Jython

Основная Ρ†Π΅Π»ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ – тСсная интСграция с языком Java. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Jython ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Java-прилоТСниями. Π’ΠΎ врСмя выполнСния такая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ настоящая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС Java.

IronPython

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ PyPy являСтся использованиС Ρ‚Ρ€Π°ΡΡΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ JIT-компилятора (just-in-time), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π»Π΅Ρ‚Ρƒ транслируСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Благодаря этому, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ PyPy обгоняСт CPython Π² нСсколько Ρ€Π°Π·. Но ΠΏΠ»Π°Ρ‚Π° Π·Π° Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ – Π±ΠΎΠ»Π΅Π΅ высокоС ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти.

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

ΠžΡΠ½ΠΎΠ²Ρ‹ языка программирования Python Π·Π° 10 ΠΌΠΈΠ½ΡƒΡ‚

ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. image loader. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваши инструкции, написанныС Π½Π° Python, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ выполняСт ΠΈΡ…. По сути ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ слой ΠΌΠ΅ΠΆΠ΄Ρƒ вашим исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ.

На сайтС Poromenos’ Stuff Π±Ρ‹Π»Π°
ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, Π² сТатой Ρ„ΠΎΡ€ΠΌΠ΅,
Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ± основах языка Python. Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π΅ дословный. Π― постарался ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСпонятны.

Если Π²Ρ‹ ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ язык Python, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ подходящСго руководства, Ρ‚ΠΎ эта
ΡΡ‚Π°Ρ‚ΡŒΡ Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ пригодится! Π—Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя, Π²Ρ‹ смоТСтС ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с
основами языка Python. Π₯отя эта ΡΡ‚Π°Ρ‚ΡŒΡ часто опираСтся
Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚ программирования, Π½ΠΎ, я надСюсь, Π΄Π°ΠΆΠ΅ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ
этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½. Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„. Π’ связи с
ΡΠΆΠ°Ρ‚ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹ рассмотрСны повСрхностно, Π½ΠΎ содСрТат вСсь
Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠ°Π».

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свойства

Python Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, являСтся рСгистро-зависим (пСрСмСнная var Π½Π΅ эквивалСнтна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Var ΠΈΠ»ΠΈ VAR β€” это Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком.

Бинтаксис

Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Python. Он Π½Π΅ содСрТит ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… скобок (begin..end Π² pascal ΠΈΠ»ΠΈ <..>Π² Π‘ΠΈ), вмСсто этого Π±Π»ΠΎΠΊΠΈ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ отступами: ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ табуляциСй, Π° Π²Ρ…ΠΎΠ΄ Π² Π±Π»ΠΎΠΊ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² осущСствляСтся Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ. ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ со Π·Π½Π°ΠΊΠ° Ρ„ΡƒΠ½Ρ‚Π° Β«#Β», многострочныС β€” Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ трСмя Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Β«»»»Β».
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°ΠΊ Β«=Β», Π° для сравнСния β€”
Β«==Β». Для увСличСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ»ΠΈ добавлСния ΠΊ строкС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«+=Β», Π° для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ β€” Β«-=Β». ВсС эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Ρ‚ΠΈΠΏΠΎΠ², Π² Ρ‚ΠΎΠΌ числС со строками. НапримСр

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ массива, задавая ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний индСкс Ρ‡Π΅Ρ€Π΅Π· Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ Β«:Β». Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒ массива, ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ индСкса Π΄ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Ρ‚ΠΎ отсчСт начинаСтся с Π½Π°Ρ‡Π°Π»Π° массива, Π° Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ послСдний β€” Ρ‚ΠΎ масив считываСтся Π΄ΠΎ послСднСго элСмСнта. ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнта с ΠΊΠΎΠ½Ρ†Π°. НапримСр:

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Python ΠΎΠ±ΠΎΡΠΎΠ±Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ Β«»Β» ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Β«’Β». Π’Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠΎΠ²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ строка «Он сказал ‘ΠΏΡ€ΠΈΠ²Π΅Ρ‚’!Β» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° Π½Π° экран ΠΊΠ°ΠΊ «Он сказал ‘ΠΏΡ€ΠΈΠ²Π΅Ρ‚’!Β». Если Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строку ΠΈΠ· нСсколько строчСк, Ρ‚ΠΎ эту строку Π½Π°Π΄ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ трСмя Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ Β«»»»Β». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² шаблон строки элСмСнты ΠΈΠ· ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ»ΠΈ словаря. Π—Π½Π°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° Β«%Β» ΠΌΠ΅ΠΆΠ΄Ρƒ строкой ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ, замСняСт Π² строкС символы Β«%sΒ» Π½Π° элСмСнт ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² строку элСмСнт ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ индСксом. Для этого Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² строкС ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Β«%(индСкс)sΒ». Π’ этом случаС вмСсто Β«%(индСкс)sΒ» Π±ΡƒΠ΄Π΅Ρ‚ подставлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ словаря ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ индСксом.

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

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ while, if, for ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ пСрСмСщСния. Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° select, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ придСтся ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ if. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ for происходит сравнСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ списка. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ†ΠΈΡ„Ρ€ Π΄ΠΎ числа β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range( ). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

if rangelist[ 1 ] == 2 :
print Β«The second item (lists are 0-based) is 2Β»
elif rangelist[ 1 ] == 3 :
print Β«The second item (lists are 0-based) is 3Β»
else :
print Β«DunnoΒ»

while rangelist[ 1 ] == 1 :
pass

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

# Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ запись эквивалСнтна def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar( 1 )
2

ΠšΠ»Π°ΡΡΡ‹

Π―Π·Ρ‹ΠΊ Python ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π² мноТСствСнном наслСдовании Π² классах. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π΄Π²ΡƒΡ… Π·Π½Π°ΠΊΠΎΠ² Π½ΠΈΠΆΠ½Π΅Π³ΠΎ подчСркивания Β«__Β» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«__myprivatevarΒ»). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса ΠΈΠ·Π²Π½Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Python ΠΈΠΌΠ΅ΡŽΡ‚ структуру tryexcept [exceptionname]:

def somefunction():
try :
# Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ноль Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ
10 / 0
except ZeroDivisionError :
# Но ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ «Π’ыполняСт Π½Π΅Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ»
# А ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ошибкС Β«ZeroDivisionErrorΒ»
print Β«Oops, invalid.Β»

Π˜ΠΌΠΏΠΎΡ€Ρ‚

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Β«import [libname]Β», Π³Π΄Π΅ [libname] β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«from [libname] import [funcname]Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ [funcname] ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ [libname]

import random #Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Β«randomΒ»
from time import clock #И Π·Π°ΠΎΠ΄Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«clockΒ» ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Β«timeΒ»

Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой

Python ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ встроСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ структуру списка, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π΅ ΠΈ сохраним строку Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅. Для прСобразования структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Β«pickleΒ»

myfile = file (r Β«C:\text.txtΒ» )
>>> print myfile.read()
‘This is a sample string’
myfile.close()

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ

def myfunc():
# Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 5
print number

def anotherfunc():
# Π­Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ глобальная апСрСмСнная
# Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π½Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Python Π² этом случаС создаСт
# ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ
# Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
print number
number = 3

def yetanotherfunc():
global number
# И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ измСняСтся.
number = 3

Π­ΠΏΠΈΠ»ΠΎΠ³

РазумССтся Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ всС возмоТности Python. Π― надСюсь Ρ‡Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ, Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈ Π² дальнСйшСм ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ этот язык программирования.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Python

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

ΠŸΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡƒΡ‡ΠΈΠ½Ρƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. Π§1

ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. d2daf8a6bfba4e1e85de156f18f835e8. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python-d2daf8a6bfba4e1e85de156f18f835e8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° d2daf8a6bfba4e1e85de156f18f835e8. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваши инструкции, написанныС Π½Π° Python, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ выполняСт ΠΈΡ…. По сути ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ слой ΠΌΠ΅ΠΆΠ΄Ρƒ вашим исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ.

ΠžΡ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°: НавСрно всСм интСрСсно, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρƒ инструмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡˆΡŒ, этот интСрСс ΠΎΠ²Π»Π°Π΄Π΅Π» ΠΈ ΠΌΠ½ΠΎΠΉ, Π½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ ΡƒΡ‚ΠΎΠΏΠ°Ρ‚ΡŒ Π² Π½Ρ‘ΠΌ ΠΈ Π½Π΅ Π·Π°ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ Π²Ρ‹Π»Π΅Π·Ρ‚ΠΈ. Найдя для сСбя интСрСсный ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», я Ρ€Π΅ΡˆΠΈΠ» Π·Π°Π±ΠΎΡ‚Π»ΠΈΠ²ΠΎ пСрСвСсти Π΅Π³ΠΎ ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ хабросообщСству (моя пСрвая публикация, ΠΏΡ€ΠΎΡˆΡƒ Π½ΠΎΠ³Π°ΠΌΠΈ сильно Π½Π΅ ΠΏΠΈΠ½Π°Ρ‚ΡŒ). Π’Π΅ΠΌ, ΠΊΠΎΠΌΡƒ интСрСсСн ΠΊΠ°ΠΊ Python Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° самом Π΄Π΅Π»Π΅, ΠΏΡ€ΠΎΡˆΡƒ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.

ПослСдниС Ρ‚Ρ€ΠΈ мСсяца я ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° byterun, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ питоновского Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°, написанного Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ этим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π±Ρ‹Π»Π° для мСня Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ вСсёлой ΠΈ ΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Π― Π±Ρ‹Π» Π±Ρ‹ Ρ€Π°Π΄, Ссли Π±Ρ‹ Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡ‚Ρ‹ΠΊΠ°Π»ΠΈ. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ остСпСнится, ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ python, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π° самом Π΄Π΅Π»Π΅ ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят.

Π― ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сСйчас Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ я Ρ‚Ρ€ΠΈ мСсяца Π½Π°Π·Π°Π΄. Π’Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ python, Π½ΠΎ понятия Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

НСбольшая Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°: Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ с вСрсиСй 2.7 Π² этом постС. Π’Ρ€Π΅Ρ‚ΡŒΡ вСрсия ΠΏΠΎΡ‡Ρ‚ΠΈ схоТа со Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Π΅ΡΡ‚ΡŒ нСбольшиС различия Π² синтаксисС ΠΈ наимСнованиях, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ всё Ρ‚ΠΎΠΆΠ΅ самоС.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ python?

ΠœΡ‹ Π½Π°Ρ‡Π½Ρ‘ΠΌ с ΠΎΡ‡Π΅Π½ΡŒ (ΠΎΡ‡Π΅Π½ΡŒ ΠΎΡ‡Π΅Π½ΡŒ) высокого уровня Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π§Ρ‚ΠΎ происходит ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС ΠΊΠΎΠ΄ Π² вашСм ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅?

Π“ΠΎΠ΄Ρ‹ ΠΈΠ΄ΡƒΡ‚, лСдянки Ρ‚Π°ΡŽΡ‚, Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ ΠΏΠΈΠ»ΠΈΡ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ ядро, Π° 64 Π±ΠΈΡ‚Ρ‹ΠΉ процСссор Π±Π΅Π· устали трудится, Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ происходит Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ шага: лСксичСской Π°Π½Π°Π»ΠΈΠ·, парсинг, компиляция ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ† Ρ‚Π°ΠΊΠΈ интСрпрСтация. ΠŸΠ°Ρ€ΡΠ΅Ρ€ Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ скормлСнныС Π΅ΠΌΡƒ инструкции ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ структуру которая ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΈΡ… связь формируя AST( АбстрактноС БинтаксичСскоС Π”Π΅Ρ€Π΅Π²ΠΎ). ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ AST Π² ΠΎΠ΄Π½ΠΈ (ΠΈΠ»ΠΈ нСсколько) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠ΄Π° (Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ + обвязка). ΠŸΠΎΡ‚ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ выполняСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π― Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± лСксичСском Π°Π½Π°Π»ΠΈΠ·Π΅, парсингС ΠΈΠ»ΠΈ компиляции сСгодня, Π½Π°Π²Π΅Ρ€Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я сам ΠΏΡ€ΠΎ эти Π²Π΅Ρ‰ΠΈ Π½ΠΈ Ρ‡Π΅Π³ΠΎ Π½Π΅ знаю, Π½ΠΎ Π½Π΅ ΡƒΠ½Ρ‹Π²Π°ΠΉΡ‚Π΅: Π²Ρ‹ всСгда смоТСтС ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ это, ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ² часов этак ΠΏΡΡ‚ΡŒΠ΄Π΅ΡΡΡ‚. ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ эти шаги ΠΏΡ€ΠΎΡˆΠ»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈ Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π° Ρ€ΡƒΠΊΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ python ΠΊΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Π΄Π΅Π»Ρƒ, я Ρ…ΠΎΡ‡Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π΅ΠΌΠ°Ρ€ΠΊΡƒ: Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ‚ΠΎΠΏΠΈΠΊΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… функциях, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΊΠΎΠ΄Π°, ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π΅. Π­Ρ‚ΠΎ всё Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Нам Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π² Π½ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, Π½ΠΎ я просто Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ΄Π° β€” это Π΄Π²Π΅ большиС Ρ€Π°Π·Π½ΠΈΡ†Ρ‹, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” самыС интСрСсныС.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Ρ‹ Π½Π°Π²Π΅Ρ€Π½ΠΎ ΠΌΠΎΠ³Π»ΠΈ ΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ». Π­Ρ‚ΠΎ Π²Π΅Ρ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΊΠΎΠ³Π΄Π° говорят: Β«Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса». Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:

Β«Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ класса» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ список это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ экзСмпляры MyObject это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π Π°Π· foo это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΅Π³ΠΎ Π½Π΅ выполняя Π΅Π³ΠΎ (Π² этом ΠΈ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ foo() ΠΈ foo). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π°Ρ‚ΡŒ foo ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ посмотрим Π½Π° foo ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉ:

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ΄Π° это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ΄Π° гСнСрируСтся питоновским компилятором ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΎΠ½ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠ΄Π°:

Π—Π΄Π΅ΡΡŒ цСлая ΠΊΡƒΡ‡Π° Π½ΠΈΡˆΡ‚ΡΠΊΠΎΠ², Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΌ сСйчас Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим Ρ‚Ρ€ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° foo.

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ здСсь Π΅ΡΡ‚ΡŒ: ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ констант ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ количСство ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Но ΠΌΡ‹ всё Π΅Ρ‰Ρ‘ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π½ΠΈ Ρ‡Π΅Π³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° инструкции. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ ссылка, кстати это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠ΄Π°:

Напоминаю Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ΄Π° это Π½Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅. Π‘Π°ΠΉΡ‚ΠΊΠΎΠ΄ это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄? Ну это просто Π½Π°Π±ΠΎΡ€ Π±Π°ΠΉΡ‚. Они выглядят странно ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡ… ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±Π°ΠΉΡ‚ΠΎΠΌ сопоставимы символы Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½Π΅Ρ‚, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΈΡ… ΠΊΠ°ΠΊ числа.

Π’ΠΎΡ‚ Π±Π°ΠΉΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ творят всю магию. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ бСзустанно Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΈ с ΠΊΠ°ΠΊΠΈΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΉΡ‚ΠΈ Π΅Ρ‰Ρ‘ дальшС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ Cpython Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ceval.c Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сдСлаСм ΠΏΠΎΠ·Π΄Π½Π΅Π΅.

ДизассСмблированиС Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°

ДизассСмблированиС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Π·ΡΡ‚ΡŒ всС эти Π±Π°ΠΉΡ‚Ρ‹ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²ΠΎ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΈ способны ΠΏΠΎΠ½ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ Π½Π΅ выполняСтся Π² стандартном Ρ†ΠΈΠΊΠ»Π΅ ΠΏΠΈΡ‚ΠΎΠ½Π°. БСгодня для этой Π·Π°Π΄Π°Ρ‡ΠΈ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ dis. ΠœΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ dis.dis Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ наша foo.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ это строка исходного python ΠΊΠΎΠ΄Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ€ это смСщСниС Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π°: LOAD_CONST находится Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 0, Π° STORE_FAST Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 3 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. БрСдняя ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ самой инструкции, послСдниС Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π΄Π°ΡŽΡ‚ понятиС ΠΎΠ± Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… инструкции (Π΅Π»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ), чСтвСртая ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сам Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой индСкс Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΠ΄Π°. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для LOAD_CONST это индСкс Π² спискС co_consts, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для STORE_FAST это индСкс Π² co_varnames, Π² пятой ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ выводятся ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ констант. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ:

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ STORE_FAST которая находится ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 3 Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π΅. Если инструкция ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° ΠΈ Π΅ΡΡ‚ΡŒ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Π Π°Π±ΠΎΡ‚Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚Π°ΠΊΠΈ Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ запутаСтся ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΡΠ΅ΡΡ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅, Π΄ΠΎΠ±Ρ€ΠΎΠ΅, Π²Π΅Ρ‡Π½ΠΎΠ΅. (Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ BINARY_ADD Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΡ‹ Π΅Ρ‰Ρ‘ вСрнСмся ΠΊ этому)

Π‘Ρ‹Π»Π° ΠΎΠ΄Π½Π° вСшь которая удивляла мСня ΠΊΠΎΠ³Π΄Π° я Π½Π°Ρ‡Π΅Π» Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ python, ΠΊΠ°ΠΊ python ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ динамичСским, Ссли ΠΎΠ½ Π΅Ρ‰Ρ‘ ΠΈ «компилируСтся»? ΠžΠ±Ρ‹Ρ‡Π½ΠΎ эти Π΄Π²Π° слова Β«Π°Π½Ρ‚ΠΎΠ½ΠΈΠΌΡ‹Β», Π΅ΡΡ‚ΡŒ динамичСскиС языки Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Python, Ruby, ΠΈ Javascript, Π° Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π°ΠΊΠΈ ΠΊΠ°ΠΊ C, Java, ΠΈ Haskell.

Когда люди говорят ΠΎΠ± ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π²ΠΈΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π² Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ x86/ARM/etc инструкции. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ компиляции Π²ΠΎΠΎΠ±Ρ‰Π΅, Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «компилируСтся» Π½Π° Π»Π΅Ρ‚Ρƒ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΈΡ‚ΠΎΠ½Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ ΠΈ выполняСт Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎ кстати достаточно ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом ΠΏΠΎΠ·Π΄Π½Π΅Π΅.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ динамичСским Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ абстрактным, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚:

Π­Ρ‚Π° дизассСмблированая функция Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π΅. К Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ функция modus Π±Ρ‹Π»Π° скомпилирована ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ€Π΄Π° Π±Ρ‹Π» сгСнСрирован. Достаточно Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, Π½ΠΎ опСрация остатка ΠΎΡ‚ дСлСния % (опСрация modulus) прСобразуСтся Π² BINARY_MODULO. ΠŸΠΎΡ…ΠΎΠΆΠ΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для чисСл:

НСплохо, Π° Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ строку.

Опана, Ρ‡Ρ‚ΠΎ это Ρ‚ΡƒΡ‚? Π’Ρ‹ Π½Π°Π²Π΅Ρ€Π½ΠΎ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ это Ρ€Π°Π½ΡŒΡˆΠ΅:

Когда опСрация BINARY_MODULO выполняСтся для Π΄Π²ΡƒΡ… строк ΠΎΠ½Π° выполняСт подстановку строк вмСсто остатка ΠΎΡ‚ дСлСния. Π­Ρ‚Π° ситуация ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ. Когда компилятор Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ΄Π° для modulus ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ понятия Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ x ΠΈ y, строки Π»ΠΈ ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ числа ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘. Он просто выполняСт инструкции: Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π΅Π½Π½ΡƒΡŽ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΏΠ°Ρ€Π°Ρ†ΠΈΡŽ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ модуля, Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π Π°Π±ΠΎΡ‚Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ BINARY_MODULO Π·Π½Π°Ρ‡ΠΈΡ‚ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ контСкстС. Наша функция modulus ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ остаток, ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ строки… ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘? Если ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ класс с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ __mod__ Ρ‚ΠΎ ΠΌΡ‹ смоТСм ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

Одна ΠΈ Ρ‚Π° ΠΆΠ΅ функция с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° контСкста. Π’Π°ΠΊΠΆΠ΅ функция modulus ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° TypeError Ссли ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

Π­Ρ‚ΠΎ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ python. Π’Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅. Russell Power ΠΈ Alex Rubinsteyn написали ΡΡ‚Π°Ρ‚ΡŒΡŽ Β«ΠΊΠ°ΠΊ быстр ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ pythonΒ», это ΡΡ‚Π°Ρ‚ΡŒΡ достаточного ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ.

На сСгодня ΠΏΠΎΠΊΠ° всС. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‚ΡƒΡ‚. ΠŸΡ€ΠΎΡˆΡƒ ΠΏΡ€ΠΎΡˆΠ΅Π½ΠΈΡ Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ошибки Ρ‚.ΠΊ. ΠΎΡ‚ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ обладаю Π²Ρ€ΠΎΠΆΠ΄Ρ‘Π½Π½ΠΎΠΉ Π±Π΅Π·Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ способом ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ тСкста.

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

НачинаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Python

РассказываСм, Π·Π°Ρ‡Π΅ΠΌ ΡƒΡ‡ΠΈΡ‚ΡŒ Python ΠΈ ΠΊΠ°ΠΊ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Data Science. Π˜Π΄Ρ‘ΠΌ пошагово: ΠΎΡ‚ установки дистрибутива Π΄ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… практичСских ΠΎΠΏΡ‹Ρ‚ΠΎΠ².

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° Π½Π° основС нашСго Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° с Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ΠΎΠΌ Пановским.

ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. 12581012112019 934ed956c9b0693fa2e227324bdc5ae191a5705b. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python-12581012112019 934ed956c9b0693fa2e227324bdc5ae191a5705b. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 12581012112019 934ed956c9b0693fa2e227324bdc5ae191a5705b. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваши инструкции, написанныС Π½Π° Python, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ выполняСт ΠΈΡ…. По сути ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ слой ΠΌΠ΅ΠΆΠ΄Ρƒ вашим исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ.

Π’ бэкграундС β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, французский язык, акадСмичСскоС рисованиС, капоэйра. БСйчас ΡƒΡ‡ΠΈΡ‚ финский. Π›ΡŽΠ±ΠΈΡ‚ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡ ΠΈ БалтийскоС ΠΌΠΎΡ€Π΅.

Python β€” высокоуровнСвый язык программирования, Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊ Π² Ρ‡Π΅ΡΡ‚ΡŒ британского ΠΊΠΎΠΌΠ΅Π΄ΠΈΠΉΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Π»Π΅ΡˆΠΎΡƒ Β«Π›Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΡ€ΠΊ ΠœΠΎΠ½Ρ‚ΠΈ ΠŸΠ°ΠΉΡ‚ΠΎΠ½Π°Β».

Π—Π°Ρ‡Π΅ΠΌ ΡƒΡ‡ΠΈΡ‚ΡŒ Python, Π³Π΄Π΅ ΠΈ ΠΊΠΎΠΌΡƒ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Python? ΠŸΡ€ΠΈΡ‡ΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎ:

Data Science, ΠΈΠ»ΠΈ Π½Π°ΡƒΠΊΠ° ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, сочСтаСт Π² сСбС ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ, статистику, IT ΠΈ знания ΠΎ бизнСсС. Python фактичСски стал отраслСвым стандартом Π² Data Science: Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° вСдётся ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Ρ‘ΠΌ. БпСциалисты Π² этой области Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π°Π΄ ΠΈΡ… Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Data Science сСйчас быстро развиваСтся, поэтому Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½ΡƒΠΆΠ½Ρ‹ компаниям всё Ρ‡Π°Ρ‰Π΅.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Python

ΠŸΠ»ΡŽΡΡ‹:

ΠœΠΈΠ½ΡƒΡΡ‹:

ВаТная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ: Π² Python Π½Π΅ указываСтся Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сначала int (Ρ†Π΅Π»ΠΎΠ΅ число), Π° ΠΏΠΎΡ‚ΠΎΠΌ float (число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ) ΠΈΠ»ΠΈ str (строка, тСкст), ΠΈ Ρ‚ΠΈΠΏ помСняСтся сам. Π—Π° эту Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ΠΊ соТалСнию, приходится Ρ€Π°ΡΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ.

По Python ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π½ΡƒΠ°Π»ΠΎΠ² ΠΊΠ°ΠΊ Π½Π° английском, Ρ‚Π°ΠΊ ΠΈ Π½Π° русском языкС. Однако Π·Π½Π°Π½ΠΈΠ΅ английского Π²Π°ΠΌ сильно ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚: Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ пСрСводится с английского Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ (Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ язык, Π²Π°ΠΌ Π½Π΅ придётся ΠΈΡ… Π·ΡƒΠ±Ρ€ΠΈΡ‚ΡŒ), Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, подсказки ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΈ описания ошибок выводятся Ρ‚ΠΎΠΆΠ΅ Π½Π° английском.

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Python

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ дистрибутив. Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Anaconda.

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

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Python?

ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. python 3. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python-python 3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° python 3. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваши инструкции, написанныС Π½Π° Python, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ выполняСт ΠΈΡ…. По сути ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ слой ΠΌΠ΅ΠΆΠ΄Ρƒ вашим исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ.

ВсСм Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΡ€ΠΈΠ²Π΅Ρ‚, сСйчас расскаТу ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Python, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ компилятор ΠΈ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π΄Π°Π»Π΅Π΅ расскаТу ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС (PVM) ΠΈ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Python. Π’Π°ΠΊΠΆΠ΅ ΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… рСализациях ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ установили сСбС Python, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ тСорСтичСски-практичСской части ΠΈ Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€

Π’ зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ вСрсии Python сам ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС C, ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ классов Java ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π½ΠΎ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅.

Запуск сцСнария Π² консоли

Π”Π°Π²Π°ΠΉΡ‚Π΅ запуститС Π² консолС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠΌΠ°Π½Π΄, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ‚ΡƒΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ:

ΡƒΡ€Π°, наша пСрвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°! πŸ˜€

Запуск сцСнария ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» «test.py», с содСрТимым:

ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ этот Ρ„Π°ΠΉΠ»:

Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² консоли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ дальшС!

ДинамичСская компиляция ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запуститС свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΌΠΈΠ½ΡƒΠ΅Ρ‚ этап компиляции ΠΈ отдаст Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ «.pyc». Однако, Ссли Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ исходныС тСксты вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ снова ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ этап компиляции Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Python автоматичСски слСдит Π·Π° Π΄Π°Ρ‚ΠΎΠΉ измСнСния Ρ„Π°ΠΉΠ»Π° с исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Если Python окаТСтся Π½Π΅ Π² состоянии Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·-Π·Π° отсутствия ΠΏΡ€Π°Π² Π½Π° запись Π½Π° диск, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ пострадаСт, просто Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ собран Π² памяти ΠΈ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΡƒΠ΄Π°Π»Π΅Π½.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Python (PVM)

ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. python. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python-python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ выполняСтся ΠΊΠΎΠ΄ Π² python. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° python. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ваши инструкции, написанныС Π½Π° Python, Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ выполняСт ΠΈΡ…. По сути ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ слой ΠΌΠ΅ΠΆΠ΄Ρƒ вашим исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

По этим ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Python Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅ быстро ΠΊΠ°ΠΊ Π½Π° C/C++. ΠžΠ±Ρ…ΠΎΠ΄ инструкций выполняСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ систСма, Π° Π½Π΅ микропроцСссор, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ интСрпрСтация, инструкции ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции микропроцСссора.

Π’ ΠΈΡ‚ΠΎΠ³Π΅, Python ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ находится ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ языками программирования.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python

Π’ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅ ΠΎ компиляторС ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎ для стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ CPython (Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ANSI C). Однако Ρ‚Π°ΠΊΠΆΠ΅ сущСствуСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Jython ΠΈ IronPython, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΉΠ΄Π΅Ρ‚ сСйчас Ρ€Π΅Ρ‡ΡŒ.

CPython

Π­Ρ‚ΠΎ стандартная ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ рСализация Python, Π½Π°Π·Π²Π°Π½Π° Ρ‚Π°ΠΊ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ написана Π½Π° ANSI C. ИмСнно Π΅Π΅ ΠΌΡ‹ установили, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ ActivePython ΠΈΠ»ΠΈ установили ΠΈΠ· FreeBSD ΠΏΠΎΡ€Ρ‚ΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это эталонная рСализация, ΠΎΠ½Π° ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, устойчивСС ΠΈ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Jython

ЦСль Jython состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π½Π° языкС Python ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Java-прилоТСниями, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ CPython ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π½Π° языках C/C++. Π­Ρ‚Π° рСализация ΠΈΠΌΠ΅Π΅Ρ‚ Π±Π΅cΡˆΠΎΠ²Π½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Java. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° Python транслируСтся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Java, Π²ΠΎ врСмя выполнСния ΠΎΠ½ Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ настоящая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС Java. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Jython ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² качСствС Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² ΠΈ сСрвлСтов, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСский интСрфСйс с использованиСм ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Java ΠΈ Ρ‚.Π΄. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Jython обСспСчиваСт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ возмоТности ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Java-классы Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Python.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ рСализация Jython обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΈ ΠΌΠ΅Π½Π΅Π΅ устойчива ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с CPython, ΠΎΠ½Π° прСдставляСт интСрСс скорСС для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ язык сцСнариСв Π² качСствС интСрфСйса ΠΊ Java-ΠΊΠΎΠ΄Ρƒ.

IronPython

БрСдства ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ скорости выполнСния

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ динамичСский компилятор Psyco ΠΈ транслятор Shedskin C++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ модСль выполнСния.

ДинамичСский компилятор Psyco

Π’ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Psyco собираСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ Π·Π°Ρ‚Π΅ΠΌ эта информация ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ высокоэффСктивного машинного ΠΊΠΎΠ΄Π°, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² этого Ρ‚ΠΈΠΏΠ°. ПослС этого ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ замСняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ участки Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, Ρ‚Π΅ΠΌ самым увСличиваСтся ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния.

Π’ ΠΈΠ΄Π΅Π°Π»Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ участки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Psyco ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΆΠ΅ быстро, ΠΊΠ°ΠΊ скомпилированный ΠΊΠΎΠ΄ Π½Π° языкС Π‘ΠΈ.

Psyco обСспСчиваСт ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости ΠΎΡ‚ 2 Π΄ΠΎ 100 Ρ€Π°Π·, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² 4 Ρ€Π°Π·Π°, ΠΏΡ€ΠΈ использовании Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python. ЕдинствСнный минус Ρƒ Psyco, это Ρ‚ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя ΠΎΠ½ способСн Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Intel x86.

Psyco Π½Π΅ ΠΈΠ΄Π΅Ρ‚ Π² стандартной поставкС, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π•Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PyPy, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ PVM с Ρ†Π΅Π»ΡŒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ Π² Psyco, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PyPy собираСтся ΠΏΠΎΠ³Π»ΠΎΡ‚ΠΈΡ‚ΡŒ Π² большСй ΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Psyco.

Вранслятор Shedskin C++

ЀиксированныС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (frozen binaries)

Иногда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ· своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Python ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ скорСС для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ распространСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ЀиксированныС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, PVM ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся СдинствСнный исполняСмый Ρ„Π°ΠΉΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ «.exe» для Windows.

На сСгодняшний дСнь сущСствуСт Ρ‚Ρ€ΠΈ основных инструмСнта создания «frozen binaries»:

Π’Π°ΠΌ Π½Π°Π΄ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ эти инструмСнты ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Python, ΠΎΠ½ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ бСсплатно.

ЀиксированныС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΌΠ°Π»Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈΠ±ΠΎ ΠΎΠ½ΠΈ содСрТат Π² сСбС PVM, Π½ΠΎ ΠΏΠΎ соврСмСнным ΠΌΠ΅Ρ€ΠΊΠ°ΠΌ ΠΈΠ· всС ΠΆΠ΅ нСльзя Π½Π°Π·Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ большими. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python встроСн нСпосрСдствСнно Π² фиксированныС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, Π΅Π³ΠΎ установка Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ сторонС.

РСзюмС

На сСгодня всё, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ расскаТу ΠΎ стандартных Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Π΅ Π² Python, Π½Ρƒ ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

создал Ρ„Π°ΠΉΠ», запустил Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΉΡ‚ΠΎΠ½, Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ошибка ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ (Ρ„Π°ΠΉΠ» сохранСн Π² UTF-8) πŸ™
SyntaxError: Non-ASCII character ‘\xd0’

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

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

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