πŸ•·οΈ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 181 (from laksa165)

2. Crawled Status Check

Query:
Response:

3. Robots.txt Check

Query:
Response:

4. Spam/Ban Check

Query:
Response:

5. Seen Status Check

ℹ️ Skipped - page is already crawled

πŸ“„
INDEXABLE
βœ…
CRAWLED
17 days ago
πŸ€–
ROBOTS ALLOWED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffPASSdownload_stamp > now() - 6 MONTH0.6 months ago
History dropPASSisNull(history_drop_reason)No drop reason
Spam/banPASSfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=0
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://sky.pro/wiki/python/python-kompiliruemyj-ili-interpretiruemyj-yazyk/
Last Crawled2026-04-04 18:08:59 (17 days ago)
First Indexed2024-06-04 16:43:52 (1 year ago)
HTTP Status Code200
Content
Meta TitlePython: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΏΡ€Π°Π²Π΄Π° скрыта
Meta DescriptionPython ΠΊΠ°ΠΊ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ язык: баланс ΠΌΠ΅ΠΆΠ΄Ρƒ компиляциСй ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
Meta Canonicalnull
Boilerpipe Text
#ΠžΡΠ½ΠΎΠ²Ρ‹ PythonΒ Β  ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ тСст, ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ профСссии ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Бколько Π²Π°ΠΌ Π»Π΅Ρ‚ 0% Π”ΠΎ 18 ΠžΡ‚ 18 Π΄ΠΎ 24 ΠžΡ‚ 25 Π΄ΠΎ 34 ΠžΡ‚ 35 Π΄ΠΎ 44 ΠžΡ‚ 45 Π΄ΠΎ 49 ΠžΡ‚ 50 Π΄ΠΎ 54 Π‘ΠΎΠ»ΡŒΡˆΠ΅ 55 Для ΠΊΠΎΠ³ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ: Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты, ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Python ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Python БпСциалисты Π² области Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ машинного обучСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Дискуссия ΠΎ Ρ‚ΠΎΠΌ, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ спор ΠΎ ΠΊΡƒΡ€ΠΈΡ†Π΅ ΠΈ яйцС β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ±Π΅ΠΆΠ΄Ρ‘Π½ Π² своСй ΠΏΡ€Π°Π²ΠΎΡ‚Π΅. Но истина, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, скрываСтся Π² дСталях. Python Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π½ΠΈΡˆΡƒ Π² этом спСктрС, прСдставляя собой Π³ΠΈΠ±Ρ€ΠΈΠ΄, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ элСмСнты ΠΎΠ±ΠΎΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². ИмСнно эта двойствСнная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Π΄Π΅Π»Π°Π΅Ρ‚ язык ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ достаточно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡ β€” ΠΎΡ‚ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ машинного обучСния. Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… исполнСния Python, Π²Ρ‹ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΊΠΎΠ΄ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространённых Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅. 🐍 ΠŸΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² ΠΌΠΈΡ€ Python с курсом ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚ Skypro! На Π½Ρ‘ΠΌ Π²Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ освоитС синтаксис ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² языка. Наши студСнты Π½Π΅ просто ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄ β€” ΠΎΠ½ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, ΠΊΠ°ΠΊ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… инструкции, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ сообщСству осознанных Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²! Гибридная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Python: Ρ‡Ρ‚ΠΎ скрываСтся Π·Π° исполнСниСм ΠΊΠΎΠ΄Π° Когда я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽ студСнтам ΠΎ Python, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос часто Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: "Python β€” это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык?" ΠžΡ‚Π²Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ прост, ΠΊΠ°ΠΊ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Python ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄ΠΎΠΉ, ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ этой особСнности критичСски Π²Π°ΠΆΠ½ΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ Π΅Π³ΠΎ возмоТностСй ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. АлСксандр ΠŸΠ΅Ρ‚Ρ€ΠΎΠ², тСхничСский Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Когда наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Ρ‡ΠΈΠ½Π°Π»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π΄ΠΈΠ»Π΅ΠΌΠΌΠΎΠΉ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считался "ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком", ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ Π²Ρ€ΠΎΠ΄Π΅ C++. Π― настоял Π½Π° Python, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ исполнСния справятся с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. ΠœΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ максимально ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства компиляции Python Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. Π’ критичСских участках ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° Cython, Π° для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΈΠ½Π³ вмСсто многопоточности. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π΅Π²Π·ΠΎΡˆΡ‘Π» оТидания β€” систСма ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π° Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, сравнимой с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках, ΠΏΡ€ΠΈ этом сохранив Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ простоту ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, присущиС Python. Π­Ρ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΎ мСня, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Python β€” ΠΊΠ»ΡŽΡ‡ ΠΊ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ чисто ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков (C, Rust) ΠΈΠ»ΠΈ строго ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… (старыС вСрсии JavaScript, Bash), Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ двухэтапный процСсс выполнСния. Π‘Π½Π°Ρ‡Π°Π»Π° исходный ΠΊΠΎΠ΄ компилируСтся Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС β€” Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ исполняСтся Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python (PVM). Π­Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° обСспСчиваСт баланс ΠΌΠ΅ΠΆΠ΄Ρƒ удобством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. АспСкт ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки Python (Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄) ΠŸΡ€ΠΎΡ†Π΅ΡΡ выполнСния Полная компиляция Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠŸΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ запуска ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ запуск (трСбуСтся компиляция) Быстрый запуск Π£ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ быстрый запуск ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Высокая Низкая БрСдняя ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСкомпиляции для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Высокая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Высокая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ компиляция Python-ΠΊΠΎΠ΄Π° происходит автоматичСски ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ создаёт Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .pyc Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ pycache , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… .py Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запусках, Ссли исходный ΠΊΠΎΠ΄ Π½Π΅ измСнился, Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΆΠ΅ скомпилированный Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ ускоряСт запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Гибридная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Python обСспСчиваСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства: ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ β€” Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° любой систСмС с установлСнным ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python Балансировка скорости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ выполнСния β€” Π½Π΅Ρ‚ нСобходимости Π² Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляции, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° этапС создания Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π˜Π½Ρ‚Ρ€ΠΎΡΠΏΠ΅ΠΊΡ†ΠΈΡ ΠΈ динамичСскиС возмоТности β€” ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ "Π½Π° Π»Π΅Ρ‚Ρƒ", Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ β€” ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ части ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° C/C++ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Python Π­Ρ‚Π° Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ создаёт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ диссонанс β€” Python Π½Π΅ вписываСтся Π² ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΡŽ "ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ/ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ". Но ΠΈΠΌΠ΅Π½Π½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ язык Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡: ΠΎΡ‚ быстрого прототипирования Π΄ΠΎ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… систСм. πŸ”„ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ интСрпрСтация Python: процСсс ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ½ΡΡ‚ΡŒ, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ ΠΈ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ исполнСния Python-ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ процСсс состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… этапов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вносит свой Π²ΠΊΠ»Π°Π΄ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ всС стадии выполнСния Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: ЛСксичСский Π°Π½Π°Π»ΠΈΠ· (токСнизация) β€” исходный ΠΊΠΎΠ΄ разбиваСтся Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ (лСксСмы) β€” ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ синтаксичСскиС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ языка БинтаксичСский Π°Π½Π°Π»ΠΈΠ· (парсинг) β€” Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ синтаксис ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ AST) ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ AST Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” Π΄Π΅Ρ€Π΅Π²ΠΎ прСобразуСтся Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Python ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° β€” происходят ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ устранСниС ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ константных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ИсполнСниС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Python (PVM) ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ инструкции Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠΈ выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа фактичСски ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой процСсс компиляции, Π° пятый этап β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Python, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. ΠœΠΈΡ…Π°ΠΈΠ» Π‘ΠΎΠΊΠΎΠ»ΠΎΠ², Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ На ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ языков программирования я Ρ€Π΅ΡˆΠΈΠ» наглядно ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ студСнтам, Ρ‡Ρ‚ΠΎ Python β€” это Π½Π΅ просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡƒΠΌΠ°ΡŽΡ‚. ΠœΡ‹ написали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° ΠΈ использовали ΠΌΠΎΠ΄ΡƒΠ»ΡŒ dis для дизассСмблирования Π΅Ρ‘ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·Π²Π°Π» настоящий шок Ρƒ студСнтов β€” ΠΎΠ½ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ассСмблСр. Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΌΠΎΠΌΠ΅Π½Ρ‚ прозрСния: "Π’Π°ΠΊ Python всё-Ρ‚Π°ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄!" ПослС этого ΠΌΡ‹ исслСдовали ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π°Ρ… .pyc ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² скорости запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляциСй ΠΈ Π±Π΅Π· Π½Π΅Ρ‘. Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, Ρ€Π°Π½Π΅Π΅ ΡΡ‡ΠΈΡ‚Π°Π²ΡˆΠΈΠ΅ Python чисто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΈ Π±ΠΎΠ»Π΅Π΅ осознанно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ возмоТности Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Python прСдоставляСт нСсколько способов взаимодСйствия с процСссом компиляции Ρ‡Π΅Ρ€Π΅Π· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ: ΠœΠΎΠ΄ΡƒΠ»ΡŒ compile() позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΊΠΎΠ΄Π° Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ΄Π° ΠœΠΎΠ΄ΡƒΠ»ΡŒ ast Π΄Π°Ρ‘Ρ‚ доступ ΠΊ абстрактному синтаксичСскому Π΄Π΅Ρ€Π΅Π²Ρƒ ΠœΠΎΠ΄ΡƒΠ»ΡŒ dis позволяСт Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для Π°Π½Π°Π»ΠΈΠ·Π° ΠœΠΎΠ΄ΡƒΠ»ΡŒ py_compile прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для явной компиляции Python-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π΄Π°Ρ‘Ρ‚ сущСствСнныС прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ: ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ОписаниС ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Π°Ρ компиляция ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° УскорСниС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании Π Π°Π½Π½Π΅Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок БинтаксичСскиС ошибки Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции Экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ распространСния Π±Π΅Π· исходного ΠΊΠΎΠ΄Π° МоТно Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹ .pyc Π—Π°Ρ‰ΠΈΡ‚Π° ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ собствСнности ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ выраТСния Π‘ΠΎΠ»Π΅Π΅ эффСктивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· измСнСния исходного ΠΊΠΎΠ΄Π° Однако Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Python β€” это Π½Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Он ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ языков со статичСской компиляциСй ΠΊΠ°ΠΊ C ΠΈΠ»ΠΈ Rust. Π­Ρ‚ΠΎ компромисс, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ возмоТности языка. 🧩 Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² Python: ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ выполнСния Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ прСдставляСт собой ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ понятиС для понимания вопроса, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования. Π­Ρ‚ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слуТит ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. ЀактичСски, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это Π½Π°Π±ΠΎΡ€ инструкций для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Python (PVM), ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для быстрой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Python прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚: Опкод β€” ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (1 Π±Π°ΠΉΡ‚), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ дСйствия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, LOAD CONST, CALL FUNCTION) АргумСнт β€” ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π°ΠΉΡ‚ΠΎΠ²), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для ΠΎΠΏΠΊΠΎΠ΄Π° Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠΌΠ΅Ρ€Π° строк Π² исходном ΠΊΠΎΠ΄Π΅ для трассировки ошибок ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания ΠΈ использования Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Python ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… аспСктов, Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ хранСния Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² для сохранСния скомпилированного Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: .pyc Ρ„Π°ΠΉΠ»Ρ‹ β€” содСрТат Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ модуля вмСстС с "магичСским числом", ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π²Π΅Ρ€ΡΠΈΡŽ Python, ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ .pyo Ρ„Π°ΠΉΠ»Ρ‹ β€” ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π² старых вСрсиях Python) __pycache__ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ β€” ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ .pyc Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ вСрсиям ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, начиная с Python 3.2 ВСрсионная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ: Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями Python. КаТдая вСрсия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ нСсовмСстимым ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями. ИмСнно поэтому ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Python приходится ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. ΠœΠΎΠ΄ΡƒΠ»ΡŒ dis: Python прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ dis . Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: Python выполняСт нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ компиляции Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄: ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния β€” Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2*3 прСвращаСтся Π² 6) Peephole-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ β€” Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JUMP инструкций УстранСниС ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ нСдостиТимых Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ модуля, Python провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ .pyc Ρ„Π°ΠΉΠ»Π° Если .pyc Ρ„Π°ΠΉΠ» сущСствуСт ΠΈ Π΅Π³ΠΎ врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° соотвСтствуСт .py Ρ„Π°ΠΉΠ»Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС .py Ρ„Π°ΠΉΠ» компилируСтся Π² Π½ΠΎΠ²Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ сохраняСтся Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: НСсмотря Π½Π° всС прСимущСства, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ свои ограничСния: Он всё Ρ€Π°Π²Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ прямого исполнСния машинного ΠΊΠΎΠ΄Π° Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… обрабатываСтся Π²ΠΎ врСмя выполнСния, Ρ‡Ρ‚ΠΎ прСпятствуСт ΠΌΠ½ΠΎΠ³ΠΈΠΌ оптимизациям НакладныС расходы Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Python ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнными ПониманиС Ρ€ΠΎΠ»ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° позволяСт Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Python Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΌ языком, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΌ элСмСнты компиляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это явноС проявлСниС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Python, хотя Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ остаётся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ процСссом. πŸ” CPython, PyPy ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Один ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… аспСктов, часто ΡƒΡΠΊΠΎΠ»ΡŒΠ·Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ внимания Π² дискуссии ΠΎ Ρ‚ΠΎΠΌ, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования, β€” это Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. Python β€” это спСцификация языка, ΠΈ сущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своим ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ компиляции ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΈ различия Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ возмоТности языка. Рассмотрим основныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python ΠΈ ΠΈΡ… особСнности: РСализация ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ исполнСния ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π¦Π΅Π»Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ CPython ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ + интСрпрСтация Бтандартная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, GIL ΠžΠ±Ρ‰Π΅Π΅ использованиС, эталонная рСализация PyPy JIT-компиляция (Just-In-Time) Π’ 3-10 Ρ€Π°Π· быстрСС CPython для Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… процСссов Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, сСрвСрныС прилоТСния Jython ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Java-экосистСмой, Π½Π΅Ρ‚ GIL Java-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python IronPython ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² IL-ΠΊΠΎΠ΄ .NET Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с .NET, Π½Π΅Ρ‚ GIL .NET-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python Cython ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² C с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ компиляциСй Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ близкая ΠΊ C Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСнсивныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Numba JIT-компиляция с LLVM для числовых вычислСний Близкая ΠΊ C ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для числовых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² НаучныС вычислСния, Ρ€Π°Π±ΠΎΡ‚Π° с массивами Π΄Π°Π½Π½Ρ‹Ρ… CPython, стандартная ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённая рСализация, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ классичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с компиляциСй Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Однако Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ Python ΠΊΠ°ΠΊ язык ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эффСктивно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ стратСгиями компиляции. Особого внимания заслуТиваСт PyPy с Π΅Π³ΠΎ систСмой JIT-компиляции. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стандартного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, PyPy Π½Π΅ просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ участки ΠΊΠΎΠ΄Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ для Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… процСссов ΠΈ цикличСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. πŸš€ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСализациях Python: Π’Ρ€Π°ΡΡΠΈΡ€ΡƒΡŽΡ‰Π°Ρ JIT-компиляция (PyPy) β€” Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ "горячиС ΠΏΡƒΡ‚ΠΈ" выполнСния ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… БтатичСская типизация (Cython) β€” позволяСт явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ LLVM-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (Numba) β€” использованиС ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ компиляторного Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ эффСктивного машинного ΠΊΠΎΠ΄Π° Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами (Jython, IronPython) β€” компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ… экосистСм Π’Ρ‹Π±ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python сущСствСнно влияСт Π½Π° характСристики выполнСния ΠΊΠΎΠ΄Π°: ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” PyPy ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ‹ быстрСС CPython для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ β€” Π½Π΅ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ всСх рСализациях ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ β€” Jython ΠΈ IronPython Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ GIL, Ρ‡Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти β€” Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ характСристики использования памяти ВрСмя запуска β€” JIT-компиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для "Ρ€Π°Π·ΠΎΠ³Ρ€Π΅Π²Π°" Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос "Python β€” ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык?" частично зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Π’ случаС Cython ΠΈΠ»ΠΈ скомпилированных с Numba Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Python становится практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ стандартный CPython прСдставляСт Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Python Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ инструмСнтом, способным Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ трСбованиям ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python: влияниС способа исполнСния ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python часто становится ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ дискуссий, особСнно Π² контСкстС Π΅Π³ΠΎ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ языка программирования с элСмСнтами компиляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ПониманиС особСнностСй исполнСния ΠΊΠΎΠ΄Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ принятия Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Рассмотрим Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹, связанныС с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ исполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python: НакладныС расходы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ β€” интСрпрСтация Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python добавляСт Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с прямым Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ машинного ΠΊΠΎΠ΄Π° ДинамичСская типизация β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя выполнСния Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя Global Interpreter Lock (GIL) β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CPython Garbage collection β€” автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ создаёт пСриодичСскиС ΠΏΠ°ΡƒΠ·Ρ‹ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с оптимизациями Π² компиляторах языков со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ НСсмотря Π½Π° эти ограничСния, сущСствуСт мноТСство стратСгий для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Python, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ особСнности исполнСния: ИспользованиС спСциализированных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ β€” NumPy, Pandas, SciPy Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π° C/C++, обходя ограничСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² часто Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ оптимизация Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β€” использованиС инструмСнтов ΠΊΠ°ΠΊ cProfile для выявлСния ΡƒΠ·ΠΊΠΈΡ… мСст ΠœΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ вмСсто многопоточности β€” ΠΎΠ±Ρ…ΠΎΠ΄ GIL Ρ‡Π΅Ρ€Π΅Π· использованиС модуля multiprocessing JIT-компиляция β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PyPy ΠΈΠ»ΠΈ Numba для компиляции горячих участков ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° C/C++ β€” вынСсСниС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ частСй Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° C Cython β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ компиляция Π² C для получСния Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΊΠΎΠ΄Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ особСнностСй Π΅Π³ΠΎ исполнСния: ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ обращСния ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ β€” доступ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ быстрСС Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΎΠ½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ list comprehensions вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ² for β€” ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС благодаря оптимизациям Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠšΠ΅ΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ дорогостоящих вычислСний β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @functools.lru_cache Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” сохраняйтС ссылки Π½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для I/O-bound Π·Π°Π΄Π°Ρ‡ Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° Π·Π°Π΄Π°Ρ‡ΠΈ. Python ΠΊΠ°ΠΊ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ язык ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ спСктр возмоТностСй: Π’ΠΈΠΏ Π·Π°Π΄Π°Ρ‡ΠΈ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ CPU-bound (Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСнсивныС) Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΈ GIL Cython, Numba, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° C, ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ Memory-bound (Ρ€Π°Π±ΠΎΡ‚Π° с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ) Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ NumPy, спСциализированныС структуры Π΄Π°Π½Π½Ρ‹Ρ…, оптимизация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² I/O-bound (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ) ОТиданиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… рСсурсов АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (asyncio), ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ БыстроС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ CPython Π±Π΅Π· слоТных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Python ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π₯отя Π΅Π³ΠΎ базовая модСль исполнСния (компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ) Π½Π΅ обСспСчиваСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков, экосистСма прСдоставляСт мноТСство инструмСнтов для прСодолСния этих ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. ПониманиС особСнностСй исполнСния Python позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ стратСгии для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. πŸ’ͺ Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Python Π½Π° "ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ" ΠΈΠ»ΠΈ "ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ" β€” это лоТная дихотомия. РСальная сила языка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅ΠΌ прСимущСства ΠΎΠ±ΠΎΠΈΡ… ΠΌΠΈΡ€ΠΎΠ². ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ обСспСчиваСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Осознавая эту Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Python ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты β€” ΠΎΡ‚ JIT-компиляции Π΄ΠΎ C-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ β€” Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт для Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ программирования, способный ΠΊΠ°ΠΊ ΠΊ быстрому ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΊ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ вычислСниям. Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅
Markdown
[![logo](https://sky.pro/wiki/_next/static/media/logo.7310b88b.svg)](https://sky.pro/wiki/) ВсС курсы![ВсС курсы](https://sky.pro/wiki/_next/static/media/arrow-down.b7053fd5.svg) [ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅](https://sky.pro/courses/programming?utm_source=skypro_wiki)[Аналитика](https://sky.pro/courses/analytics?utm_source=skypro_wiki)[Π”ΠΈΠ·Π°ΠΉΠ½](https://sky.pro/courses/design?utm_source=skypro_wiki)[ΠœΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³](https://sky.pro/courses/marketing?utm_source=skypro_wiki) [Π’Π΅Π±ΠΈΠ½Π°Ρ€Ρ‹](https://sky.pro/webinars?utm_source=skypro_wiki)[Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² IT](https://sky.pro/promo/media/main-proftest?utm_source=skypro_wiki&utm_medium=how-it)[Π Π΅Ρ„Π΅Ρ€Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°](https://sky.pro/referral_graduate?utm_source=skypro_wiki)[![ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ Π² Skypro](https://sky.pro/wiki/_next/static/media/profession.e342f684.svg)ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ Π² Skypro](https://sky.pro/?utm_source=skypro_wiki&utm_medium=free) ![МСню](https://sky.pro/wiki/_next/static/media/burger-menu.e5065ba6.svg) [Java](https://sky.pro/wiki/java/) [Python](https://sky.pro/wiki/python/) [HTML](https://sky.pro/wiki/html/) [SQL](https://sky.pro/wiki/sql/) [JavaScript](https://sky.pro/wiki/javascript/) [Profession](https://sky.pro/wiki/profession/) [Gadgets](https://sky.pro/wiki/gadgets/) [Money](https://sky.pro/wiki/money/) [Gamedev](https://sky.pro/wiki/gamedev/) [Marketing](https://sky.pro/wiki/marketing/) [Management](https://sky.pro/wiki/management/) [DigitalArt](https://sky.pro/wiki/digital-art/) [Analytics](https://sky.pro/wiki/analytics/) [Lifestyle](https://sky.pro/wiki/lifestyle/) [Media](https://sky.pro/wiki/media/) [AI](https://sky.pro/wiki/ai/) [Главная](https://sky.pro/) ![arrow](https://sky.pro/wiki/_next/static/media/nav-arrow.45d56d4a.svg) [Wiki](https://sky.pro/wiki/) ![arrow](https://sky.pro/wiki/_next/static/media/nav-arrow.45d56d4a.svg) [Python](https://sky.pro/wiki/python/) ![arrow](https://sky.pro/wiki/_next/static/media/nav-arrow.45d56d4a.svg) Python: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΏΡ€Π°Π²Π΄Π° скрыта [12 ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΏΠΎ нСйросСтям для ΠΆΠΈΠ·Π½ΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ](https://sky.pro/courses/ai/minicourses_ai?utm_source=skypro_wiki&utm_campaign=https%3A%2F%2Fsky.pro%2Fwiki%2Fpython%2Fpython-kompiliruemyj-ili-interpretiruemyj-yazyk%2F&utm_medium=top_banner_2) # Python: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΏΡ€Π°Π²Π΄Π° скрыта [\#ΠžΡΠ½ΠΎΠ²Ρ‹ Python](https://sky.pro/wiki/tags/osnovy-python/) ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ тСст, ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ профСссии ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Бколько Π²Π°ΠΌ Π»Π΅Ρ‚ 0% Π”ΠΎ 18 ΠžΡ‚ 18 Π΄ΠΎ 24 ΠžΡ‚ 25 Π΄ΠΎ 34 ΠžΡ‚ 35 Π΄ΠΎ 44 ΠžΡ‚ 45 Π΄ΠΎ 49 ΠžΡ‚ 50 Π΄ΠΎ 54 Π‘ΠΎΠ»ΡŒΡˆΠ΅ 55 **Для ΠΊΠΎΠ³ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ:** - Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты, ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Python - ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Python - БпСциалисты Π² области Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ машинного обучСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Дискуссия ΠΎ Ρ‚ΠΎΠΌ, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ спор ΠΎ ΠΊΡƒΡ€ΠΈΡ†Π΅ ΠΈ яйцС β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ±Π΅ΠΆΠ΄Ρ‘Π½ Π² своСй ΠΏΡ€Π°Π²ΠΎΡ‚Π΅. Но истина, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, скрываСтся Π² дСталях. Python Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π½ΠΈΡˆΡƒ Π² этом спСктрС, прСдставляя собой Π³ΠΈΠ±Ρ€ΠΈΠ΄, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ элСмСнты ΠΎΠ±ΠΎΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². ИмСнно эта двойствСнная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Π΄Π΅Π»Π°Π΅Ρ‚ язык ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ достаточно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡ β€” ΠΎΡ‚ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ машинного обучСния. Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… исполнСния Python, Π²Ρ‹ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΊΠΎΠ΄ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространённых Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅. 🐍 > ΠŸΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² ΠΌΠΈΡ€ Python с курсом [ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅](https://sky.pro/courses/programming/python-web-course) ΠΎΡ‚ Skypro! На Π½Ρ‘ΠΌ Π²Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ освоитС синтаксис ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² языка. Наши студСнты Π½Π΅ просто ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄ β€” ΠΎΠ½ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, ΠΊΠ°ΠΊ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… инструкции, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ сообщСству осознанных Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²\! ## Гибридная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Python: Ρ‡Ρ‚ΠΎ скрываСтся Π·Π° исполнСниСм ΠΊΠΎΠ΄Π° Когда я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽ студСнтам ΠΎ Python, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос часто Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: "Python β€” это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык?" ΠžΡ‚Π²Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ прост, ΠΊΠ°ΠΊ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Python ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄ΠΎΠΉ, ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ этой особСнности критичСски Π²Π°ΠΆΠ½ΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ Π΅Π³ΠΎ возмоТностСй ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. > **АлСксандр ΠŸΠ΅Ρ‚Ρ€ΠΎΠ², тСхничСский Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…** > > Когда наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Ρ‡ΠΈΠ½Π°Π»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π΄ΠΈΠ»Π΅ΠΌΠΌΠΎΠΉ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считался "ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком", ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ Π²Ρ€ΠΎΠ΄Π΅ C++. Π― настоял Π½Π° Python, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ исполнСния справятся с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. > > ΠœΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ максимально ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства компиляции Python Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. Π’ критичСских участках ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° Cython, Π° для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΈΠ½Π³ вмСсто многопоточности. > > Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π΅Π²Π·ΠΎΡˆΡ‘Π» оТидания β€” систСма ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π° Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, сравнимой с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках, ΠΏΡ€ΠΈ этом сохранив Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ простоту ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, присущиС Python. Π­Ρ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΎ мСня, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Python β€” ΠΊΠ»ΡŽΡ‡ ΠΊ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ чисто ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков (C, Rust) ΠΈΠ»ΠΈ строго ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… (старыС вСрсии JavaScript, Bash), Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ двухэтапный процСсс выполнСния. Π‘Π½Π°Ρ‡Π°Π»Π° исходный ΠΊΠΎΠ΄ компилируСтся Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС β€” Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ исполняСтся Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python (PVM). Π­Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° обСспСчиваСт баланс ΠΌΠ΅ΠΆΠ΄Ρƒ удобством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. | АспСкт | ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки | Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки | Python (Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄) | |---|---|---|---| | ΠŸΡ€ΠΎΡ†Π΅ΡΡ выполнСния | Полная компиляция Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ | ΠŸΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ | | Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ запуска | ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ запуск (трСбуСтся компиляция) | Быстрый запуск | Π£ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ быстрый запуск | | ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ | Высокая | Низкая | БрСдняя | | ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ | Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСкомпиляции для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ | Высокая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ | Высокая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° | Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ компиляция Python-ΠΊΠΎΠ΄Π° происходит автоматичСски ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ создаёт Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .pyc Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ **pycache**, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… .py Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запусках, Ссли исходный ΠΊΠΎΠ΄ Π½Π΅ измСнился, Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΆΠ΅ скомпилированный Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ ускоряСт запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Гибридная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Python обСспСчиваСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства: - **ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ** β€” Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° любой систСмС с установлСнным ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python - **Балансировка скорости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ выполнСния** β€” Π½Π΅Ρ‚ нСобходимости Π² Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляции, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° этапС создания Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° - **Π˜Π½Ρ‚Ρ€ΠΎΡΠΏΠ΅ΠΊΡ†ΠΈΡ ΠΈ динамичСскиС возмоТности** β€” ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ "Π½Π° Π»Π΅Ρ‚Ρƒ", Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках - **Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ** β€” ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ части ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° C/C++ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Python Π­Ρ‚Π° Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ создаёт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ диссонанс β€” Python Π½Π΅ вписываСтся Π² ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΡŽ "ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ/ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ". Но ΠΈΠΌΠ΅Π½Π½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ язык Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡: ΠΎΡ‚ быстрого прототипирования Π΄ΠΎ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… систСм. πŸ”„ [![ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½ для смСны профСссии](https://sky.pro/wiki/_next/static/media/change-profession.a746fa2e.webp)](https://sky.pro/promo/media/main-proftest?utm_source=skypro_wiki&utm_medium=side_banner&utm_campaign=https://sky.pro/wiki/) ## ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ интСрпрСтация Python: процСсс ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ½ΡΡ‚ΡŒ, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ ΠΈ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ исполнСния Python-ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ процСсс состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… этапов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вносит свой Π²ΠΊΠ»Π°Π΄ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ всС стадии выполнСния Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: 1. **ЛСксичСский Π°Π½Π°Π»ΠΈΠ· (токСнизация)** β€” исходный ΠΊΠΎΠ΄ разбиваСтся Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ (лСксСмы) β€” ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ синтаксичСскиС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ языка 2. **БинтаксичСский Π°Π½Π°Π»ΠΈΠ· (парсинг)** β€” Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ синтаксис ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ AST) 3. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ AST Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄** β€” Π΄Π΅Ρ€Π΅Π²ΠΎ прСобразуСтся Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Python 4. **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** β€” происходят ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ устранСниС ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ константных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ 5. **ИсполнСниС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Python (PVM) ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ инструкции Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠΈ выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа фактичСски ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой процСсс компиляции, Π° пятый этап β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Python, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. > **ΠœΠΈΡ…Π°ΠΈΠ» Π‘ΠΎΠΊΠΎΠ»ΠΎΠ², Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ** > > На ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ языков программирования я Ρ€Π΅ΡˆΠΈΠ» наглядно ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ студСнтам, Ρ‡Ρ‚ΠΎ Python β€” это Π½Π΅ просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡƒΠΌΠ°ΡŽΡ‚. ΠœΡ‹ написали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° ΠΈ использовали ΠΌΠΎΠ΄ΡƒΠ»ΡŒ dis для дизассСмблирования Π΅Ρ‘ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: > > Python > > Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ > ``` > def factorial(n): if n <= 1: return 1 return n * factorial(n-1) import dis dis.dis(factorial) > ``` > > Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·Π²Π°Π» настоящий шок Ρƒ студСнтов β€” ΠΎΠ½ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ассСмблСр. Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΌΠΎΠΌΠ΅Π½Ρ‚ прозрСния: "Π’Π°ΠΊ Python всё-Ρ‚Π°ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄!" > > ПослС этого ΠΌΡ‹ исслСдовали ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π°Ρ… .pyc ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² скорости запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляциСй ΠΈ Π±Π΅Π· Π½Π΅Ρ‘. Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, Ρ€Π°Π½Π΅Π΅ ΡΡ‡ΠΈΡ‚Π°Π²ΡˆΠΈΠ΅ Python чисто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΈ Π±ΠΎΠ»Π΅Π΅ осознанно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ возмоТности Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Python прСдоставляСт нСсколько способов взаимодСйствия с процСссом компиляции Ρ‡Π΅Ρ€Π΅Π· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ: - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `compile()` позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΊΠΎΠ΄Π° Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ΄Π° - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `ast` Π΄Π°Ρ‘Ρ‚ доступ ΠΊ абстрактному синтаксичСскому Π΄Π΅Ρ€Π΅Π²Ρƒ - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `dis` позволяСт Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для Π°Π½Π°Π»ΠΈΠ·Π° - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `py_compile` прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для явной компиляции Python-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π΄Π°Ρ‘Ρ‚ сущСствСнныС прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ: | ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ | ОписаниС | ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ | |---|---|---| | ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ | ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Π°Ρ компиляция ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° | УскорСниС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании | | Π Π°Π½Π½Π΅Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок | БинтаксичСскиС ошибки Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции | Экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ | | Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ распространСния Π±Π΅Π· исходного ΠΊΠΎΠ΄Π° | МоТно Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹ .pyc | Π—Π°Ρ‰ΠΈΡ‚Π° ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ собствСнности | | ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ выраТСния | Π‘ΠΎΠ»Π΅Π΅ эффСктивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· измСнСния исходного ΠΊΠΎΠ΄Π° | Однако Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Python β€” это Π½Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Он ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ языков со статичСской компиляциСй ΠΊΠ°ΠΊ C ΠΈΠ»ΠΈ Rust. Π­Ρ‚ΠΎ компромисс, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ возмоТности языка. 🧩 ## Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² Python: ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ выполнСния Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ прСдставляСт собой ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ понятиС для понимания вопроса, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования. Π­Ρ‚ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слуТит ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. ЀактичСски, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это Π½Π°Π±ΠΎΡ€ инструкций для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Python (PVM), ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для быстрой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Python прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚: - **Опкод** β€” ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (1 Π±Π°ΠΉΡ‚), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ дСйствия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, LOAD*CONST, CALL*FUNCTION) - **АргумСнт** β€” ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π°ΠΉΡ‚ΠΎΠ²), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для ΠΎΠΏΠΊΠΎΠ΄Π° - **Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅** β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠΌΠ΅Ρ€Π° строк Π² исходном ΠΊΠΎΠ΄Π΅ для трассировки ошибок ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания ΠΈ использования Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Python ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… аспСктов, Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: 1. **Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ хранСния Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² для сохранСния скомпилированного Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: - `.pyc` Ρ„Π°ΠΉΠ»Ρ‹ β€” содСрТат Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ модуля вмСстС с "магичСским числом", ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π²Π΅Ρ€ΡΠΈΡŽ Python, ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ - `.pyo` Ρ„Π°ΠΉΠ»Ρ‹ β€” ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π² старых вСрсиях Python) - `__pycache__` Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ β€” ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ .pyc Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ вСрсиям ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, начиная с Python 3.2 2. **ВСрсионная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ:** Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями Python. КаТдая вСрсия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ нСсовмСстимым ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями. ИмСнно поэтому ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Python приходится ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. 3. **ΠœΠΎΠ΄ΡƒΠ»ΡŒ dis:** Python прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ `dis`. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ: Python Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ``` import dis def example(a, b): return a + b dis.dis(example) ``` 1. **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** Python выполняСт нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ компиляции Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄: - **ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния** β€” Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2\*3 прСвращаСтся Π² 6) - **Peephole-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ** β€” Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JUMP инструкций - **УстранСниС ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°** β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ нСдостиТимых Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° 2. **Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** - ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ модуля, Python провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ .pyc Ρ„Π°ΠΉΠ»Π° - Если .pyc Ρ„Π°ΠΉΠ» сущСствуСт ΠΈ Π΅Π³ΠΎ врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° соотвСтствуСт .py Ρ„Π°ΠΉΠ»Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ - Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС .py Ρ„Π°ΠΉΠ» компилируСтся Π² Π½ΠΎΠ²Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ сохраняСтся - Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ 3. **ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** НСсмотря Π½Π° всС прСимущСства, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ свои ограничСния: - Он всё Ρ€Π°Π²Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ прямого исполнСния машинного ΠΊΠΎΠ΄Π° - Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… обрабатываСтся Π²ΠΎ врСмя выполнСния, Ρ‡Ρ‚ΠΎ прСпятствуСт ΠΌΠ½ΠΎΠ³ΠΈΠΌ оптимизациям - НакладныС расходы Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Python ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнными ПониманиС Ρ€ΠΎΠ»ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° позволяСт Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Python Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΌ языком, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΌ элСмСнты компиляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это явноС проявлСниС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Python, хотя Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ остаётся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ процСссом. πŸ” ## CPython, PyPy ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Один ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… аспСктов, часто ΡƒΡΠΊΠΎΠ»ΡŒΠ·Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ внимания Π² дискуссии ΠΎ Ρ‚ΠΎΠΌ, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования, β€” это Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. Python β€” это спСцификация языка, ΠΈ сущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своим ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ компиляции ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΈ различия Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ возмоТности языка. Рассмотрим основныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python ΠΈ ΠΈΡ… особСнности: | РСализация | ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ исполнСния | ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ | Π¦Π΅Π»Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ | |---|---|---|---| | CPython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ + интСрпрСтация | Бтандартная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, GIL | ΠžΠ±Ρ‰Π΅Π΅ использованиС, эталонная рСализация | | PyPy | JIT-компиляция (Just-In-Time) | Π’ 3-10 Ρ€Π°Π· быстрСС CPython для Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… процСссов | Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, сСрвСрныС прилоТСния | | Jython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ | Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Java-экосистСмой, Π½Π΅Ρ‚ GIL | Java-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python | | IronPython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² IL-ΠΊΠΎΠ΄ .NET | Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с .NET, Π½Π΅Ρ‚ GIL | .NET-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python | | Cython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² C с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ компиляциСй Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ | ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ близкая ΠΊ C | Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСнсивныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ | | Numba | JIT-компиляция с LLVM для числовых вычислСний | Близкая ΠΊ C ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для числовых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² | НаучныС вычислСния, Ρ€Π°Π±ΠΎΡ‚Π° с массивами Π΄Π°Π½Π½Ρ‹Ρ… | CPython, стандартная ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённая рСализация, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ классичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с компиляциСй Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Однако Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ Python ΠΊΠ°ΠΊ язык ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эффСктивно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ стратСгиями компиляции. Особого внимания заслуТиваСт PyPy с Π΅Π³ΠΎ систСмой JIT-компиляции. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стандартного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, PyPy Π½Π΅ просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ участки ΠΊΠΎΠ΄Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ для Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… процСссов ΠΈ цикличСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. πŸš€ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСализациях Python: - **Π’Ρ€Π°ΡΡΠΈΡ€ΡƒΡŽΡ‰Π°Ρ JIT-компиляция** (PyPy) β€” Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ "горячиС ΠΏΡƒΡ‚ΠΈ" выполнСния ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… - **БтатичСская типизация** (Cython) β€” позволяСт явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ - **LLVM-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ** (Numba) β€” использованиС ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ компиляторного Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ эффСктивного машинного ΠΊΠΎΠ΄Π° - **Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами** (Jython, IronPython) β€” компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ… экосистСм Π’Ρ‹Π±ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python сущСствСнно влияСт Π½Π° характСристики выполнСния ΠΊΠΎΠ΄Π°: 1. **ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ** β€” PyPy ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ‹ быстрСС CPython для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ 2. **Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ** β€” Π½Π΅ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ всСх рСализациях 3. **ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ** β€” Jython ΠΈ IronPython Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ GIL, Ρ‡Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ 4. **ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти** β€” Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ характСристики использования памяти 5. **ВрСмя запуска** β€” JIT-компиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для "Ρ€Π°Π·ΠΎΠ³Ρ€Π΅Π²Π°" Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос "Python β€” ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык?" частично зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Π’ случаС Cython ΠΈΠ»ΠΈ скомпилированных с Numba Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Python становится практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ стандартный CPython прСдставляСт Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Python Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ инструмСнтом, способным Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ трСбованиям ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ## ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python: влияниС способа исполнСния ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python часто становится ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ дискуссий, особСнно Π² контСкстС Π΅Π³ΠΎ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ языка программирования с элСмСнтами компиляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ПониманиС особСнностСй исполнСния ΠΊΠΎΠ΄Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ принятия Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Рассмотрим Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹, связанныС с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ исполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python: - **НакладныС расходы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ** β€” интСрпрСтация Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python добавляСт Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с прямым Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ машинного ΠΊΠΎΠ΄Π° - **ДинамичСская типизация** β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя выполнСния Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя - **Global Interpreter Lock (GIL)** β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CPython - **Garbage collection** β€” автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ создаёт пСриодичСскиС ΠΏΠ°ΡƒΠ·Ρ‹ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ - **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с оптимизациями Π² компиляторах языков со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ НСсмотря Π½Π° эти ограничСния, сущСствуСт мноТСство стратСгий для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Python, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ особСнности исполнСния: 1. **ИспользованиС спСциализированных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ** β€” NumPy, Pandas, SciPy Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π° C/C++, обходя ограничСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° 2. **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…** β€” ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² часто Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ оптимизация Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка 3. **ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°** β€” использованиС инструмСнтов ΠΊΠ°ΠΊ cProfile для выявлСния ΡƒΠ·ΠΊΠΈΡ… мСст 4. **ΠœΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ вмСсто многопоточности** β€” ΠΎΠ±Ρ…ΠΎΠ΄ GIL Ρ‡Π΅Ρ€Π΅Π· использованиС модуля multiprocessing 5. **JIT-компиляция** β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PyPy ΠΈΠ»ΠΈ Numba для компиляции горячих участков ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции 6. **Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° C/C++** β€” вынСсСниС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ частСй Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° C 7. **Cython** β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ компиляция Π² C для получСния Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΊΠΎΠ΄Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ особСнностСй Π΅Π³ΠΎ исполнСния: - **ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ обращСния ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ** β€” доступ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ быстрСС - **Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…** β€” ΠΎΠ½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° - **ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ list comprehensions вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ² for** β€” ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС благодаря оптимизациям Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° - **ΠšΠ΅ΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ дорогостоящих вычислСний** β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @functools.lru\_cache - **Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²** β€” сохраняйтС ссылки Π½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ - **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄** β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для I/O-bound Π·Π°Π΄Π°Ρ‡ Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° Π·Π°Π΄Π°Ρ‡ΠΈ. Python ΠΊΠ°ΠΊ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ язык ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ спСктр возмоТностСй: | Π’ΠΈΠΏ Π·Π°Π΄Π°Ρ‡ΠΈ | ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ | |---|---|---| | CPU-bound (Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСнсивныС) | Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΈ GIL | Cython, Numba, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° C, ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ | | Memory-bound (Ρ€Π°Π±ΠΎΡ‚Π° с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ) | Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ | NumPy, спСциализированныС структуры Π΄Π°Π½Π½Ρ‹Ρ…, оптимизация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² | | I/O-bound (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ) | ОТиданиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… рСсурсов | АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (asyncio), ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ | | БыстроС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ | Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ | Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ CPython Π±Π΅Π· слоТных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ | Python ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π₯отя Π΅Π³ΠΎ базовая модСль исполнСния (компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ) Π½Π΅ обСспСчиваСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков, экосистСма прСдоставляСт мноТСство инструмСнтов для прСодолСния этих ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. ПониманиС особСнностСй исполнСния Python позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ стратСгии для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. πŸ’ͺ > Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Python Π½Π° "ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ" ΠΈΠ»ΠΈ "ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ" β€” это лоТная дихотомия. РСальная сила языка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅ΠΌ прСимущСства ΠΎΠ±ΠΎΠΈΡ… ΠΌΠΈΡ€ΠΎΠ². ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ обСспСчиваСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Осознавая эту Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Python ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты β€” ΠΎΡ‚ JIT-компиляции Π΄ΠΎ C-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ β€” Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт для Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ программирования, способный ΠΊΠ°ΠΊ ΠΊ быстрому ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΊ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ вычислСниям. **Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅** - [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Python-ΠΊΠΎΠ΄Π°: ΠΎΡ‚ основ Π΄ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ с Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ](https://sky.pro/wiki/python/primery-koda-na-python-i-ih-obuyasnenie/) - [Π’Ρ‹Π±ΠΎΡ€ языка программирования: Π³Π΄Π΅ Python Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚](https://sky.pro/wiki/python/python-protiv-drugih-yazykov-programmirovaniya/) - [Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Python ΠΈ R-Studio: ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Ρ‚Π°Π½Π΄Π΅ΠΌ Π² Π°Π½Π°Π»ΠΈΠ·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…](https://sky.pro/wiki/python/instrukciya-po-rabote-v-r-studio-s-python/) - [ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² Python Π½Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ++ ΠΈ -- ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ](https://sky.pro/wiki/python/inkrement-i-dekrement-v-python-kak-eto-rabotaet/) - [Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ API WhatsApp ΠΈ Discord с Python: мощная автоматизация](https://sky.pro/wiki/python/kak-ispolzovat-python-dlya-raboty-s-api-whatsapp-i-discord/) - [15 ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Python-скриптов для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ](https://sky.pro/wiki/python/poleznye-skripty-na-python/) - [Lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python: ΠΌΠΎΡ‰Π½Ρ‹Π΅ однострочныС условия для ΠΊΠΎΠ΄Π°](https://sky.pro/wiki/python/kak-ispolzovat-lambda-vyrazheniya-s-usloviem-v-python/) - [Настройка Python Π² Visual Studio: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²](https://sky.pro/wiki/python/nastrojka-i-ispolzovanie-python-v-visual-studio/) - [ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Python: особСнности, отличия, эффСктивноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅](https://sky.pro/wiki/python/massivy-v-python-opredelenie-i-primery/) - [Python ΠΈ Go: сравнСниС языков программирования для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²](https://sky.pro/wiki/python/python-protiv-go-sravnenie-yazykov-programmirovaniya/) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒ ΠΊΠ°ΠΊ Ρ‚Ρ‹ усвоил ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠŸΡ€ΠΎΠΉΠ΄ΠΈ тСст ΠΈ ΡƒΠ·Π½Π°ΠΉ насколько Ρ‚Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ Какой процСсс происходит ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Python-ΠΊΠΎΠ΄Π°? 1 / 5 Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компилируСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся процСссором. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ компилируСтся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ интСрпрСтируСтся Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ выполняСтся Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляции. Антон ΠšΡ€Ρ‹Π»ΠΎΠ² Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π‘Π²Π΅ΠΆΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ [Π’ΠΈΠ΄Π΅ΠΎ ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…](https://sky.pro/wiki/python/video-uroki-po-analizu-dannyh/) 6 сСнтября 2024 [ΠžΠ±Π·ΠΎΡ€ популярных курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ: C, Python, Java ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅](https://sky.pro/wiki/python/obzor-populyarnyh-kursov-po-programmirovaniyu-c-python-java-i-drugie/) 6 сСнтября 2024 [Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΊΠ°Π½Π°Π»Ρ‹ для изучСния Python](https://sky.pro/wiki/python/luchshie-kanaly-dlya-izucheniya-python/) 6 сСнтября 2024 #### Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°... Навигация ΠΏΠΎ ΡΡ‚Π°Ρ‚ΡŒΠ΅ [Гибридная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Python: Ρ‡Ρ‚ΠΎ скрываСтся Π·Π° исполнСниСм ΠΊΠΎΠ΄Π°](https://sky.pro/wiki/python/python-kompiliruemyj-ili-interpretiruemyj-yazyk/#section-0) [ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ интСрпрСтация Python: процСсс ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ](https://sky.pro/wiki/python/python-kompiliruemyj-ili-interpretiruemyj-yazyk/#section-1) [Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² Python: ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ выполнСния](https://sky.pro/wiki/python/python-kompiliruemyj-ili-interpretiruemyj-yazyk/#section-2) [CPython, PyPy ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹](https://sky.pro/wiki/python/python-kompiliruemyj-ili-interpretiruemyj-yazyk/#section-3) [ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python: влияниС способа исполнСния](https://sky.pro/wiki/python/python-kompiliruemyj-ili-interpretiruemyj-yazyk/#section-4) [![ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½ для смСны профСссии](https://sky.pro/wiki/_next/static/media/change-profession.a746fa2e.webp)](https://sky.pro/promo/media/main-proftest?utm_source=skypro_wiki&utm_medium=side_banner&utm_campaign=https://sky.pro/wiki/) [![logo](https://sky.pro/wiki/_next/static/media/logo.7310b88b.svg)](https://sky.pro/) ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ [\+7 495 137 85 99](tel:+74951378599) [skypro-support@skyeng.ru](mailto:skypro-support@skyeng.ru) O Skypro [ΠžΡ‚Π·Ρ‹Π²Ρ‹](https://sky.pro/reviews/?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [ВсС профСссии](https://sky.pro/courses/?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [Условия использования](https://legal.sky.pro/doc/view/terms-of-use-skypro) [ВСст Π½Π° ΠΏΡ€ΠΎΡ„ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ](https://sky.pro/test-na-proforientaciyu) ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΈ [Аналитик Π΄Π°Π½Π½Ρ‹Ρ…](https://sky.pro/courses/analytics/data_analytics?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [ВСстировщик](https://sky.pro/courses/programming/qa-engineer?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ](https://sky.pro/courses/programming/python-web-course?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ](https://sky.pro/courses/programming/java-developer?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [Π’Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ](https://sky.pro/courses/programming/web-developer?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [ГрафичСский Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€](https://sky.pro/courses/design/graf-designer?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) [Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΎΠ»ΠΎΠ³](https://sky.pro/courses/marketing/internet-marketolog?utm_source=skypro_wiki_seo&utm_medium=free&utm_campaign=n_skypro_wiki%7Cpr_%7Cfu_product%7Cma_litunova%7Cown_b2c%7Ccnt_RU%7Cbr_Skypro%7Cchg_smm%7Cdt_31-01-2024) Β© Skypro 2026 [![vk](https://sky.pro/wiki/_next/static/media/vk.dc33d87a.svg)](https://go.sky.pro/vkontakte_main) [![telegram](https://sky.pro/wiki/_next/static/media/tg.8eaf1a91.svg)](https://go.sky.pro/telegram_main) [![youtube](https://sky.pro/wiki/_next/static/media/youtube.fb920da0.svg)](https://go.sky.pro/YouTube_main) ![](https://api.sky.pro/track/cookies) ![Top.Mail.Ru](https://top-fwz1.mail.ru/counter?id=3288732;js=na)
Readable Markdown
[\#ΠžΡΠ½ΠΎΠ²Ρ‹ Python](https://sky.pro/wiki/tags/osnovy-python/) ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ тСст, ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ профСссии ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Бколько Π²Π°ΠΌ Π»Π΅Ρ‚ 0% Π”ΠΎ 18 ΠžΡ‚ 18 Π΄ΠΎ 24 ΠžΡ‚ 25 Π΄ΠΎ 34 ΠžΡ‚ 35 Π΄ΠΎ 44 ΠžΡ‚ 45 Π΄ΠΎ 49 ΠžΡ‚ 50 Π΄ΠΎ 54 Π‘ΠΎΠ»ΡŒΡˆΠ΅ 55 **Для ΠΊΠΎΠ³ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ:** - Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты, ΠΈΠ·ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Python - ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Python - БпСциалисты Π² области Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ машинного обучСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Дискуссия ΠΎ Ρ‚ΠΎΠΌ, ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ спор ΠΎ ΠΊΡƒΡ€ΠΈΡ†Π΅ ΠΈ яйцС β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ±Π΅ΠΆΠ΄Ρ‘Π½ Π² своСй ΠΏΡ€Π°Π²ΠΎΡ‚Π΅. Но истина, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, скрываСтся Π² дСталях. Python Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π½ΠΈΡˆΡƒ Π² этом спСктрС, прСдставляя собой Π³ΠΈΠ±Ρ€ΠΈΠ΄, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ элСмСнты ΠΎΠ±ΠΎΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². ИмСнно эта двойствСнная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Π΄Π΅Π»Π°Π΅Ρ‚ язык ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ достаточно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡ β€” ΠΎΡ‚ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ машинного обучСния. Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ Π² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°Ρ… исполнСния Python, Π²Ρ‹ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΊΠΎΠ΄ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ распространённых Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅. 🐍 > ΠŸΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ΡΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅ Π² ΠΌΠΈΡ€ Python с курсом [ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅](https://sky.pro/courses/programming/python-web-course) ΠΎΡ‚ Skypro! На Π½Ρ‘ΠΌ Π²Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ освоитС синтаксис ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² языка. Наши студСнты Π½Π΅ просто ΠΏΠΈΡˆΡƒΡ‚ ΠΊΠΎΠ΄ β€” ΠΎΠ½ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, ΠΊΠ°ΠΊ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… инструкции, Ρ‡Ρ‚ΠΎ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ сообщСству осознанных Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²\! ## Гибридная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Python: Ρ‡Ρ‚ΠΎ скрываСтся Π·Π° исполнСниСм ΠΊΠΎΠ΄Π° Когда я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽ студСнтам ΠΎ Python, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вопрос часто Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: "Python β€” это ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык?" ΠžΡ‚Π²Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ прост, ΠΊΠ°ΠΊ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Python ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄ΠΎΠΉ, ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ этой особСнности критичСски Π²Π°ΠΆΠ½ΠΎ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ Π΅Π³ΠΎ возмоТностСй ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. > **АлСксандр ΠŸΠ΅Ρ‚Ρ€ΠΎΠ², тСхничСский Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…** > > Когда наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Ρ‡ΠΈΠ½Π°Π»Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π΄ΠΈΠ»Π΅ΠΌΠΌΠΎΠΉ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считался "ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком", ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ Π²Ρ€ΠΎΠ΄Π΅ C++. Π― настоял Π½Π° Python, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ исполнСния справятся с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. > > ΠœΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ максимально ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства компиляции Python Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. Π’ критичСских участках ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° Cython, Π° для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΈΠ½Π³ вмСсто многопоточности. > > Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€Π΅Π²Π·ΠΎΡˆΡ‘Π» оТидания β€” систСма ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π° Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, сравнимой с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках, ΠΏΡ€ΠΈ этом сохранив Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ простоту ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, присущиС Python. Π­Ρ‚ΠΎ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΎ мСня, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Python β€” ΠΊΠ»ΡŽΡ‡ ΠΊ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ Π΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π°. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ чисто ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков (C, Rust) ΠΈΠ»ΠΈ строго ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… (старыС вСрсии JavaScript, Bash), Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ двухэтапный процСсс выполнСния. Π‘Π½Π°Ρ‡Π°Π»Π° исходный ΠΊΠΎΠ΄ компилируСтся Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС β€” Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ исполняСтся Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python (PVM). Π­Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° обСспСчиваСт баланс ΠΌΠ΅ΠΆΠ΄Ρƒ удобством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. | АспСкт | ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки | Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ языки | Python (Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄) | |---|---|---|---| | ΠŸΡ€ΠΎΡ†Π΅ΡΡ выполнСния | Полная компиляция Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ | ΠŸΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ | | Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ запуска | ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ запуск (трСбуСтся компиляция) | Быстрый запуск | Π£ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ быстрый запуск | | ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ | Высокая | Низкая | БрСдняя | | ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ | Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСкомпиляции для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ | Высокая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ | Высокая ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° | Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ компиляция Python-ΠΊΠΎΠ΄Π° происходит автоматичСски ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ создаёт Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .pyc Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ **pycache**, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… .py Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запусках, Ссли исходный ΠΊΠΎΠ΄ Π½Π΅ измСнился, Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΆΠ΅ скомпилированный Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ ускоряСт запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Гибридная ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Python обСспСчиваСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства: - **ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ** β€” Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° любой систСмС с установлСнным ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python - **Балансировка скорости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ выполнСния** β€” Π½Π΅Ρ‚ нСобходимости Π² Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляции, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° этапС создания Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° - **Π˜Π½Ρ‚Ρ€ΠΎΡΠΏΠ΅ΠΊΡ†ΠΈΡ ΠΈ динамичСскиС возмоТности** β€” ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ "Π½Π° Π»Π΅Ρ‚Ρƒ", Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках - **Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ** β€” ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ части ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° C/C++ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Python Π­Ρ‚Π° Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ создаёт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ диссонанс β€” Python Π½Π΅ вписываСтся Π² ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΡŽ "ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ/ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ". Но ΠΈΠΌΠ΅Π½Π½ΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚ язык Ρ‚Π°ΠΊΠΈΠΌ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ спСктра Π·Π°Π΄Π°Ρ‡: ΠΎΡ‚ быстрого прототипирования Π΄ΠΎ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… систСм. πŸ”„ [![ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½ для смСны профСссии](https://sky.pro/wiki/_next/static/media/change-profession.a746fa2e.webp)](https://sky.pro/promo/media/main-proftest?utm_source=skypro_wiki&utm_medium=side_banner&utm_campaign=https://sky.pro/wiki/) ## ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ интСрпрСтация Python: процСсс ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ½ΡΡ‚ΡŒ, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ ΠΈ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ исполнСния Python-ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ процСсс состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… этапов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вносит свой Π²ΠΊΠ»Π°Π΄ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ всС стадии выполнСния Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: 1. **ЛСксичСский Π°Π½Π°Π»ΠΈΠ· (токСнизация)** β€” исходный ΠΊΠΎΠ΄ разбиваСтся Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ (лСксСмы) β€” ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ синтаксичСскиС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ языка 2. **БинтаксичСский Π°Π½Π°Π»ΠΈΠ· (парсинг)** β€” Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ синтаксис ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (абстрактноС синтаксичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ AST) 3. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ AST Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄** β€” Π΄Π΅Ρ€Π΅Π²ΠΎ прСобразуСтся Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Python 4. **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** β€” происходят ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ устранСниС ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ константных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ 5. **ИсполнСниС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** β€” Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Python (PVM) ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ инструкции Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° ΠΈ выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ этапа фактичСски ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой процСсс компиляции, Π° пятый этап β€” ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Python, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. > **ΠœΠΈΡ…Π°ΠΈΠ» Π‘ΠΎΠΊΠΎΠ»ΠΎΠ², Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ** > > На ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ языков программирования я Ρ€Π΅ΡˆΠΈΠ» наглядно ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ студСнтам, Ρ‡Ρ‚ΠΎ Python β€” это Π½Π΅ просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡƒΠΌΠ°ΡŽΡ‚. ΠœΡ‹ написали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° ΠΈ использовали ΠΌΠΎΠ΄ΡƒΠ»ΡŒ dis для дизассСмблирования Π΅Ρ‘ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: > > Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·Π²Π°Π» настоящий шок Ρƒ студСнтов β€” ΠΎΠ½ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ассСмблСр. Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΌΠΎΠΌΠ΅Π½Ρ‚ прозрСния: "Π’Π°ΠΊ Python всё-Ρ‚Π°ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄!" > > ПослС этого ΠΌΡ‹ исслСдовали ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Ρ„Π°ΠΉΠ»Π°Ρ… .pyc ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² скорости запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляциСй ΠΈ Π±Π΅Π· Π½Π΅Ρ‘. Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹, Ρ€Π°Π½Π΅Π΅ ΡΡ‡ΠΈΡ‚Π°Π²ΡˆΠΈΠ΅ Python чисто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ ΠΈ Π±ΠΎΠ»Π΅Π΅ осознанно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ возмоТности Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Python прСдоставляСт нСсколько способов взаимодСйствия с процСссом компиляции Ρ‡Π΅Ρ€Π΅Π· ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ: - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `compile()` позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΊΠΎΠ΄Π° Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠΎΠ΄Π° - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `ast` Π΄Π°Ρ‘Ρ‚ доступ ΠΊ абстрактному синтаксичСскому Π΄Π΅Ρ€Π΅Π²Ρƒ - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `dis` позволяСт Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для Π°Π½Π°Π»ΠΈΠ·Π° - ΠœΠΎΠ΄ΡƒΠ»ΡŒ `py_compile` прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для явной компиляции Python-Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π΄Π°Ρ‘Ρ‚ сущСствСнныС прСимущСства ΠΏΠ΅Ρ€Π΅Π΄ чистой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ: | ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ | ОписаниС | ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ | |---|---|---| | ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ | ΠžΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Π°Ρ компиляция ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° | УскорСниС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании | | Π Π°Π½Π½Π΅Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ошибок | БинтаксичСскиС ошибки Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции | Экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ | | Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ распространСния Π±Π΅Π· исходного ΠΊΠΎΠ΄Π° | МоТно Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Ρ‹ .pyc | Π—Π°Ρ‰ΠΈΡ‚Π° ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ собствСнности | | ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ выраТСния | Π‘ΠΎΠ»Π΅Π΅ эффСктивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· измСнСния исходного ΠΊΠΎΠ΄Π° | Однако Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Python β€” это Π½Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Он ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ языков со статичСской компиляциСй ΠΊΠ°ΠΊ C ΠΈΠ»ΠΈ Rust. Π­Ρ‚ΠΎ компромисс, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ возмоТности языка. 🧩 ## Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² Python: ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ выполнСния Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ прСдставляСт собой ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ понятиС для понимания вопроса, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования. Π­Ρ‚ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слуТит ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Π½ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. ЀактичСски, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это Π½Π°Π±ΠΎΡ€ инструкций для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Python (PVM), ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для быстрой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Python прСдставляСт собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚: - **Опкод** β€” ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (1 Π±Π°ΠΉΡ‚), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ дСйствия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, LOAD*CONST, CALL*FUNCTION) - **АргумСнт** β€” ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π°ΠΉΡ‚ΠΎΠ²), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для ΠΎΠΏΠΊΠΎΠ΄Π° - **Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅** β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠΌΠ΅Ρ€Π° строк Π² исходном ΠΊΠΎΠ΄Π΅ для трассировки ошибок ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания ΠΈ использования Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π² Python ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… аспСктов, Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ: 1. **Π€ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ хранСния Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² для сохранСния скомпилированного Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°: - `.pyc` Ρ„Π°ΠΉΠ»Ρ‹ β€” содСрТат Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ модуля вмСстС с "магичСским числом", ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π²Π΅Ρ€ΡΠΈΡŽ Python, ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ - `.pyo` Ρ„Π°ΠΉΠ»Ρ‹ β€” ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π² старых вСрсиях Python) - `__pycache__` Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ β€” ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ .pyc Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ вСрсиям ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, начиная с Python 3.2 2. **ВСрсионная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ:** Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π½Π΅ являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями Python. КаТдая вСрсия ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠΊΠΎΠ΄Ρ‹ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ нСсовмСстимым ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями. ИмСнно поэтому ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Python приходится ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. 3. **ΠœΠΎΠ΄ΡƒΠ»ΡŒ dis:** Python прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Π°Π½Π°Π»ΠΈΠ·Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ `dis`. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ Π²ΠΈΠ΄, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ: 1. **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** Python выполняСт нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ компиляции Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄: - **ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния** β€” Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π½Π° этапС компиляции (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 2\*3 прСвращаСтся Π² 6) - **Peephole-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ** β€” Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JUMP инструкций - **УстранСниС ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°** β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ нСдостиТимых Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° 2. **Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** - ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ модуля, Python провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ .pyc Ρ„Π°ΠΉΠ»Π° - Если .pyc Ρ„Π°ΠΉΠ» сущСствуСт ΠΈ Π΅Π³ΠΎ врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° соотвСтствуСт .py Ρ„Π°ΠΉΠ»Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ - Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС .py Ρ„Π°ΠΉΠ» компилируСтся Π² Π½ΠΎΠ²Ρ‹ΠΉ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ сохраняСтся - Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ 3. **ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°:** НСсмотря Π½Π° всС прСимущСства, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ свои ограничСния: - Он всё Ρ€Π°Π²Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ прямого исполнСния машинного ΠΊΠΎΠ΄Π° - Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… обрабатываСтся Π²ΠΎ врСмя выполнСния, Ρ‡Ρ‚ΠΎ прСпятствуСт ΠΌΠ½ΠΎΠ³ΠΈΠΌ оптимизациям - НакладныС расходы Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Python ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сущСствСнными ПониманиС Ρ€ΠΎΠ»ΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° позволяСт Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Python Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΌ языком, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΌ элСмСнты компиляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄ β€” это явноС проявлСниС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ Python, хотя Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ остаётся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ процСссом. πŸ” ## CPython, PyPy ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Один ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… аспСктов, часто ΡƒΡΠΊΠΎΠ»ΡŒΠ·Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ внимания Π² дискуссии ΠΎ Ρ‚ΠΎΠΌ, являСтся Π»ΠΈ Python ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком программирования, β€” это Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. Python β€” это спСцификация языка, ΠΈ сущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своим ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ компиляции ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΈ различия Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ возмоТности языка. Рассмотрим основныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python ΠΈ ΠΈΡ… особСнности: | РСализация | ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ исполнСния | ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ | Π¦Π΅Π»Π΅Π²ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ | |---|---|---|---| | CPython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ + интСрпрСтация | Бтандартная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, GIL | ΠžΠ±Ρ‰Π΅Π΅ использованиС, эталонная рСализация | | PyPy | JIT-компиляция (Just-In-Time) | Π’ 3-10 Ρ€Π°Π· быстрСС CPython для Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… процСссов | Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, сСрвСрныС прилоТСния | | Jython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ | Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Java-экосистСмой, Π½Π΅Ρ‚ GIL | Java-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python | | IronPython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² IL-ΠΊΠΎΠ΄ .NET | Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с .NET, Π½Π΅Ρ‚ GIL | .NET-прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Python | | Cython | ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² C с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ компиляциСй Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ | ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ близкая ΠΊ C | Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСнсивныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ | | Numba | JIT-компиляция с LLVM для числовых вычислСний | Близкая ΠΊ C ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для числовых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² | НаучныС вычислСния, Ρ€Π°Π±ΠΎΡ‚Π° с массивами Π΄Π°Π½Π½Ρ‹Ρ… | CPython, стандартная ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённая рСализация, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ классичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с компиляциСй Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Однако Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ Python ΠΊΠ°ΠΊ язык ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ эффСктивно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ стратСгиями компиляции. Особого внимания заслуТиваСт PyPy с Π΅Π³ΠΎ систСмой JIT-компиляции. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стандартного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, PyPy Π½Π΅ просто ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ участки ΠΊΠΎΠ΄Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ для Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΡ… процСссов ΠΈ цикличСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. πŸš€ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… рСализациях Python: - **Π’Ρ€Π°ΡΡΠΈΡ€ΡƒΡŽΡ‰Π°Ρ JIT-компиляция** (PyPy) β€” Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ "горячиС ΠΏΡƒΡ‚ΠΈ" выполнСния ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… - **БтатичСская типизация** (Cython) β€” позволяСт явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ - **LLVM-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ** (Numba) β€” использованиС ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ компиляторного Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ эффСктивного машинного ΠΊΠΎΠ΄Π° - **Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами** (Jython, IronPython) β€” компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ… экосистСм Π’Ρ‹Π±ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Python сущСствСнно влияСт Π½Π° характСристики выполнСния ΠΊΠΎΠ΄Π°: 1. **ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ** β€” PyPy ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ‹ быстрСС CPython для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ 2. **Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ** β€” Π½Π΅ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ всСх рСализациях 3. **ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ** β€” Jython ΠΈ IronPython Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ GIL, Ρ‡Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ 4. **ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти** β€” Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ характСристики использования памяти 5. **ВрСмя запуска** β€” JIT-компиляторы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для "Ρ€Π°Π·ΠΎΠ³Ρ€Π΅Π²Π°" Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос "Python β€” ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык?" частично зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Π’ случаС Cython ΠΈΠ»ΠΈ скомпилированных с Numba Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Python становится практичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ языком, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ стандартный CPython прСдставляСт Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Python Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ инструмСнтом, способным Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ трСбованиям ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ## ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python: влияниС способа исполнСния ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python часто становится ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ дискуссий, особСнно Π² контСкстС Π΅Π³ΠΎ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ языка программирования с элСмСнтами компиляции ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ПониманиС особСнностСй исполнСния ΠΊΠΎΠ΄Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ принятия Π²Π·Π²Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Рассмотрим Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹, связанныС с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ исполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python: - **НакладныС расходы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ** β€” интСрпрСтация Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной Python добавляСт Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с прямым Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ машинного ΠΊΠΎΠ΄Π° - **ДинамичСская типизация** β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎ врСмя выполнСния Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя - **Global Interpreter Lock (GIL)** β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CPython - **Garbage collection** β€” автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ создаёт пСриодичСскиС ΠΏΠ°ΡƒΠ·Ρ‹ Π² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ - **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°** β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с оптимизациями Π² компиляторах языков со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ НСсмотря Π½Π° эти ограничСния, сущСствуСт мноТСство стратСгий для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Python, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ особСнности исполнСния: 1. **ИспользованиС спСциализированных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ** β€” NumPy, Pandas, SciPy Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π° C/C++, обходя ограничСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° 2. **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ…** β€” ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² часто Π²Π°ΠΆΠ½Π΅Π΅, Ρ‡Π΅ΠΌ оптимизация Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка 3. **ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°** β€” использованиС инструмСнтов ΠΊΠ°ΠΊ cProfile для выявлСния ΡƒΠ·ΠΊΠΈΡ… мСст 4. **ΠœΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ вмСсто многопоточности** β€” ΠΎΠ±Ρ…ΠΎΠ΄ GIL Ρ‡Π΅Ρ€Π΅Π· использованиС модуля multiprocessing 5. **JIT-компиляция** β€” ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ PyPy ΠΈΠ»ΠΈ Numba для компиляции горячих участков ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции 6. **Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° C/C++** β€” вынСсСниС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ частСй Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° C 7. **Cython** β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ компиляция Π² C для получСния Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΊΠΎΠ΄Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ особСнностСй Π΅Π³ΠΎ исполнСния: - **ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ обращСния ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ** β€” доступ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ быстрСС - **Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…** β€” ΠΎΠ½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° - **ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠΉΡ‚Π΅ list comprehensions вмСсто Ρ†ΠΈΠΊΠ»ΠΎΠ² for** β€” ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС благодаря оптимизациям Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° - **ΠšΠ΅ΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ дорогостоящих вычислСний** β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @functools.lru\_cache - **Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²** β€” сохраняйтС ссылки Π½Π° часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ - **ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄** β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для I/O-bound Π·Π°Π΄Π°Ρ‡ Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π° Π·Π°Π΄Π°Ρ‡ΠΈ. Python ΠΊΠ°ΠΊ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹ΠΉ язык ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ спСктр возмоТностСй: | Π’ΠΈΠΏ Π·Π°Π΄Π°Ρ‡ΠΈ | ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€ | Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ | |---|---|---| | CPU-bound (Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ-интСнсивныС) | Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΈ GIL | Cython, Numba, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° C, ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ | | Memory-bound (Ρ€Π°Π±ΠΎΡ‚Π° с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ) | Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ | NumPy, спСциализированныС структуры Π΄Π°Π½Π½Ρ‹Ρ…, оптимизация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² | | I/O-bound (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ) | ОТиданиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… рСсурсов | АсинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (asyncio), ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ | | БыстроС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ | Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ | Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ CPython Π±Π΅Π· слоТных ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ | Python ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ Π² ΠΏΠ»Π°Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π₯отя Π΅Π³ΠΎ базовая модСль исполнСния (компиляция Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ) Π½Π΅ обСспСчиваСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков, экосистСма прСдоставляСт мноТСство инструмСнтов для прСодолСния этих ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. ПониманиС особСнностСй исполнСния Python позволяСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ стратСгии для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. πŸ’ͺ > Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Python Π½Π° "ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ" ΠΈΠ»ΠΈ "ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ" β€” это лоТная дихотомия. РСальная сила языка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΅Π³ΠΎ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅ΠΌ прСимущСства ΠΎΠ±ΠΎΠΈΡ… ΠΌΠΈΡ€ΠΎΠ². ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ обСспСчиваСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ, Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. Осознавая эту Π΄Π²ΠΎΠΉΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ Python ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты β€” ΠΎΡ‚ JIT-компиляции Π΄ΠΎ C-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ β€” Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ инструмСнт для Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ программирования, способный ΠΊΠ°ΠΊ ΠΊ быстрому ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΈ ΠΊ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ вычислСниям. **Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅**
ML Classification
ML Categories
/Computers_and_Electronics
96.5%
/Computers_and_Electronics/Programming
95.1%
/Computers_and_Electronics/Programming/Scripting_Languages
87.4%
Raw JSON
{
    "/Computers_and_Electronics": 965,
    "/Computers_and_Electronics/Programming": 951,
    "/Computers_and_Electronics/Programming/Scripting_Languages": 874
}
ML Page Types
/Article
99.7%
/Article/Tutorial_or_Guide
85.7%
Raw JSON
{
    "/Article": 997,
    "/Article/Tutorial_or_Guide": 857
}
ML Intent Types
Informational
99.9%
Raw JSON
{
    "Informational": 999
}
Content Metadata
Languageru
AuthorАлСксСй Кодов
Publish Timenot set
Original Publish Time2024-06-04 16:43:52 (1 year ago)
RepublishedNo
Word Count (Total)2,708
Word Count (Content)2,349
Links
External Links6
Internal Links57
Technical SEO
Meta NofollowNo
Meta NoarchiveNo
JS RenderedYes
Redirect Targetnull
Performance
Download Time (ms)386
TTFB (ms)294
Download Size (bytes)151,943
Shard181 (laksa)
Root Hash18009342750325351181
Unparsed URLpro,sky!/wiki/python/python-kompiliruemyj-ili-interpretiruemyj-yazyk/ s443