πŸ•·οΈ Crawler Inspector

URL Lookup

Direct Parameter Lookup

Raw Queries and Responses

1. Shard Calculation

Query:
Response:
Calculated Shard: 179 (from laksa023)

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

🚫
NOT INDEXABLE
βœ…
CRAWLED
8 months ago
🚫
ROBOTS BLOCKED

Page Info Filters

FilterStatusConditionDetails
HTTP statusPASSdownload_http_code = 200HTTP 200
Age cutoffFAILdownload_stamp > now() - 6 MONTH8.5 months ago
History dropFAILisNull(history_drop_reason)tooold
Spam/banFAILfh_dont_index != 1 AND ml_spam_score = 0ml_spam_score=720
CanonicalPASSmeta_canonical IS NULL OR = '' OR = src_unparsedNot set

Page Details

PropertyValue
URLhttps://proghunter.ru/articles/compiling-code-dynamically-using-the-compile-function-in-python
Last Crawled2025-07-25 09:46:16 (8 months ago)
First Indexed2023-05-15 11:20:49 (2 years ago)
HTTP Status Code200
Meta TitleДинамичСская компиляция ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() Π² Python
Meta DescriptionΠ’ языкС программирования Python сущСствуСт функция compile(), которая позволяСт динамичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим синтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile(), Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования.
Meta Canonicalnull
Boilerpipe Text
Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π’ языкС программирования Python сущСствуСт функция compile() , которая позволяСт динамичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим синтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() , Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования. Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() Ѐункция compile() ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис: compiled_code = compile ( source , filename , mode ) Π“Π΄Π΅: source : строка ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. filename : имя Ρ„Π°ΠΉΠ»Π°, связанноС с ΠΊΠΎΠ΄ΠΎΠΌ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ указываСтся для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ошибкС). mode : Ρ€Π΅ΠΆΠΈΠΌ компиляции. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: "exec", "eval" ΠΈΠ»ΠΈ "single". ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ исполнСниС ΠΊΠΎΠ΄Π° code = """ def greet(name): print(f"Hello, {name}!") greet("Alice") """ compiled_code = compile ( code , "<string>" , "exec" ) exec ( compiled_code ) Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ исполняСм ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ greet() ΠΈ Π²Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция compile() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ строки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° <string> ΠΈ Ρ€Π΅ΠΆΠΈΠΌ компиляции exec . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ исполняСм скомпилированный ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ exec() . ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ вычислСниС выраТСния expression = "2 + 3 * 4" compiled_code = compile ( expression , "<string>" , "eval" ) result = eval ( compiled_code ) print ( result ) Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ вычисляСм Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 2 + 3 * 4 . Ѐункция compile() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ строки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° <string> ΠΈ Ρ€Π΅ΠΆΠΈΠΌ компиляции eval . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ вычисляСм скомпилированноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ eval() . ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ инструкции instruction = "print('Hello, World!')" compiled_code = compile ( instruction , "<string>" , "single" ) exec ( compiled_code ) Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ выполняСм ΠΎΠ΄Π½Ρƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ - ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ сообщСния Hello, World! . Ѐункция compile() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ строки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° <string> ΠΈ Ρ€Π΅ΠΆΠΈΠΌ компиляции single . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ выполняСм ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ exec() . ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΊΠΎΠ΄Π° с использованиСм Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x = 5 y = 10 code = f""" result = { x } + { y } print(result) """ compiled_code = compile ( code , "<string>" , "exec" ) exec ( compiled_code ) Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ исполняСм ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ внСшниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ x ΠΈ y . ΠœΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ значСния этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² скомпилированный ΠΊΠΎΠ΄, ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ вычислСн ΠΈ распСчатан. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок компиляции code = """ print("Hello, World!" """ try : compiled_code = compile ( code , "<string>" , "exec" ) except SyntaxError as e : print ( f"Compilation Error: { e } " ) Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ нСзакрытая скобка Π² строкС ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции. ΠœΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² compile() Π² Π±Π»ΠΎΠΊ try-except для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка компиляции, ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΎΠ± ошибкС. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ѐункция compile() Π² Python прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ динамичСской компиляции ΠΊΠΎΠ΄Π° Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Она позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ выраТСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ инструкции. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ динамичСских ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Однако, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ использованиС compile() Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ врСдоносный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½.
Markdown
[![proghunter](https://proghunter.ru/_next/image?url=%2Fassets%2Flogo.png&w=96&q=75)PROGHUNTER.ru этот ΠΊΠΎΠ΄... \<сработаСт\>](https://proghunter.ru/) ![ДинамичСская компиляция ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() Π² Python](https://proghunter.ru/_next/image?url=https%3A%2F%2Fproghunter.ru%2Fmedia%2Fimages%2Fthumbnails%2F2023%2F05%2F15%2Fimage-cd8753ff8f.png&w=3840&q=90) [Python](https://proghunter.ru/category/python "ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ: Python") ## ДинамичСская компиляция ΠΊΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() Π² Python Π’Π΅Π³ΠΈ Π½Π΅ Π·Π°Π΄Π°Π½Ρ‹ 15 мая 2023 Razilator πŸ”₯0 πŸ’”0 πŸ’•0 ΠžΡ†Π΅Π½ΠΊΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π•Ρ‰Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΎΡ†Π΅Π½ΠΈΠ» ΡΡ‚Π°Ρ‚ΡŒΡŽ 1. [Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile()](https://proghunter.ru/articles/compiling-code-dynamically-using-the-compile-function-in-python#%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-compile) 2. [ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile()](https://proghunter.ru/articles/compiling-code-dynamically-using-the-compile-function-in-python#%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-compile) 3. [Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅](https://proghunter.ru/articles/compiling-code-dynamically-using-the-compile-function-in-python#%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5) Π’ языкС программирования **Python** сущСствуСт функция `compile()`, которая позволяСт динамичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим синтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `compile()`, Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования. ## Бинтаксис Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() Ѐункция `compile()` ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис: ``` compiled_code = compile(source, filename, mode) ``` **Π“Π΄Π΅:** - `source`: строка ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. - `filename`: имя Ρ„Π°ΠΉΠ»Π°, связанноС с ΠΊΠΎΠ΄ΠΎΠΌ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ указываСтся для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ошибкС). - `mode`: Ρ€Π΅ΠΆΠΈΠΌ компиляции. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: "exec", "eval" ΠΈΠ»ΠΈ "single". ## ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ compile() **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ исполнСниС ΠΊΠΎΠ΄Π°** main.py ``` code = """ def greet(name): print(f"Hello, {name}!") greet("Alice") """ compiled_code = compile(code, "<string>", "exec") exec(compiled_code) ``` Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ исполняСм ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `greet()` ΠΈ Π²Ρ‹Π·ΠΎΠ² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция `compile()` ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ строки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° `<string>` ΠΈ Ρ€Π΅ΠΆΠΈΠΌ компиляции `exec`. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ исполняСм скомпилированный ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `exec()`. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ вычислСниС выраТСния** main.py ``` expression = "2 + 3 * 4" compiled_code = compile(expression, "<string>", "eval") result = eval(compiled_code) print(result) # 14 ``` Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ вычисляСм Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ `2 + 3 * 4`. Ѐункция `compile()` ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ строки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° `<string>` ΠΈ Ρ€Π΅ΠΆΠΈΠΌ компиляции `eval`. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ вычисляСм скомпилированноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `eval()`. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ инструкции** main.py ``` instruction = "print('Hello, World!')" compiled_code = compile(instruction, "<string>", "single") exec(compiled_code) ``` Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ выполняСм ΠΎΠ΄Π½Ρƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ - ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ сообщСния `Hello, World!`. Ѐункция `compile()` ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ строки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя Ρ„Π°ΠΉΠ»Π° `<string>` ΠΈ Ρ€Π΅ΠΆΠΈΠΌ компиляции `single`. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ выполняСм ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `exec()`. **ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΊΠΎΠ΄Π° с использованиСм Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…** main.py ``` x = 5 y = 10 code = f""" result = {x} + {y} print(result) """ compiled_code = compile(code, "<string>", "exec") exec(compiled_code) ``` Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ исполняСм ΠΊΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ внСшниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ `x` ΠΈ `y`. ΠœΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ значСния этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² скомпилированный ΠΊΠΎΠ΄, ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ вычислСн ΠΈ распСчатан. **ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок компиляции** main.py ``` code = """ print("Hello, World!" """ try: compiled_code = compile(code, "<string>", "exec") except SyntaxError as e: print(f"Compilation Error: {e}") ``` Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ нСзакрытая скобка Π² строкС ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции. ΠœΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² `compile()` Π² Π±Π»ΠΎΠΊ `try-except` для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка компиляции, ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΎΠ± ошибкС. ## Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ѐункция `compile()` Π² **Python** прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ динамичСской компиляции ΠΊΠΎΠ΄Π° Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Она позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ выраТСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ инструкции. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ динамичСских ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Однако, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ использованиС `compile()` Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ остороТности, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ врСдоносный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½. ; МСню ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ О сайтС Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Π‘Π»ΠΎΠ³ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Владислава АлСксандровича. ВСдСтся мСдлСнная, Π½ΠΎ увСрСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° сайта. Django Core: 0.3.4 / Next.js 1.0 / UPD: 05.06.2023 ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Π°Ρ информация [![Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ Ρ‡Π°Ρ‚ ΠΈ ΠΊΠ°Π½Π°Π»](https://proghunter.ru/assets/icon/telegram.svg) Π§Π°Ρ‚ сайта \|](https://t.me/+ZQ1l3H-CjlA4MDJi "Π§Π°Ρ‚ сайта Π² telegram")[Канал: @ProgHub - Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°](https://t.me/notehunter "Канал сайта Π² telegram") ![ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° Π² Boosty](https://proghunter.ru/assets/icon/boosty.svg) [ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° Boosty](https://boosty.to/razilator/donate)
Readable Markdownnull
Shard179 (laksa)
Root Hash18307797679744913379
Unparsed URLru,proghunter!/articles/compiling-code-dynamically-using-the-compile-function-in-python s443