Рубрики
Без рубрики

Python Compiele ()

Если вы похожи на меня, вы любите эти TLDR; Обзовы, чтобы быстро понять большую картину. Вот мой о функции Compile () Python (): встроенный метод Compile () Python возвращает объект исполняемого кода как «абстрактное синтаксическое дерево», представленное как объект AST. Передав этот объект кода в функции EXEC () или EVAL (), вы можете запустить … Python Compile () Подробнее »

Автор оригинала: Chris.

Если ты как я, как ты любишь тех TLDR; Обзовы, чтобы быстро понять большую картину. Вот мой о Python’s компилировать () Функция:

Встроенный Python компилировать () Метод Возвращает объект исполняемого кода как «Абстрактное синтаксическое дерево» представлен как AST объект. Передав этот код объекта в EXEC () или Eval () Функции, вы можете динамически запустить его в вашем коде Python. Таким образом, вы можете программно создавать исходный код и выполнить его во время выполнения. Чтобы использовать функцию, пропустите строковый код, который должен быть выполнен, имя файла и режима выполнения. Например Компиляция («Печать (« Привет ») ',' ',' Exec ') Создает объект кода, состоящий из одной линии Печать ("Привет") Отказ

Эта статья показывает, как использовать Встроенный Python компилировать () метод.

Использование компиляции ()

Узнайте пример! Допустим, у вас есть файл кода со следующим контентом:

# some_code.py file
customers = {"Alice": 40000, "Bob": 33000}
print(f"Bob: {customers['Bob']}")

Вот пример того, как использовать компилировать () Встроенная функция Отказ

# Read the code from the file or define it explicitly:
code = 'customers = {"Alice": 40000, "Bob": 33000}\nprint(f"Bob: {customers[\'Bob\']}")'

# Create the ast code object
code_obj = compile(code, '', 'exec')

# Execute the ast code object
exec(code_obj)

# Result:
# Bob: 33000

Во-первых, вы создаете код как строку. Во-вторых, вы проходите строку в компилировать () Функция для создания AST объект. Затем вы можете передать этот объект в EXEC () функция и запустить ее динамически.

Видео компиляция ()

Зачем использование компиляции () вместо EXEC () со строкой?

Прежде чем погружаться в синтаксис, вы не можете быть мотивированы для использования компилировать () функция в первую очередь. Почему? Потому что вы также можете использовать EXEC () Функция на строке вместо объекта кода.

Функция Python Exec () Выполняет код Python, который вы проходите в виде строки или исполняемого объекта аргумента. Это называется Динамическое исполнение потому что, в отличие от нормальных Статический Код Python, вы можете генерировать код и выполнить его во время выполнения. Таким образом, вы можете запустить программно созданный код Python.

Вот тот же код без компилировать () :

code = 'customers = {"Alice": 40000, "Bob": 33000}\nprint(f"Bob: {customers[\'Bob\']}")'
exec(code)
# Bob: 33000

Выход то же самое. Тем не менее, есть Два преимущества Использование объекта кода:

  • Вы делаете это явным. Без явного составления строки EXEC () Метод будет делать то же самое неявно. Таким образом, если вам необходимо запустить тот же код несколько раз, вы можете сохранить значительные накладные компиляции, просто составив его один раз.
  • Вы можете использовать мощный AST объект в противном случае. Это дает вам доступ к некоторым помощникам и дополнительной информации о таких, как имена, определенные в коде:
>>> code_obj.co_names
('customers', 'print')

Вы получаете эту информацию из сборной строки, которая очень удобна!

Синтаксис компиляции ()

Вы можете использовать компилировать () Способ с несколькими разными аргументами.

Syntax: 
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 
Аргументы источник Строка будет скомпилирована в объект кода.
имя файла Файл, из которого код, приведенный в источнике. Если это была строка, используйте ”.
Режим Режим выполнения – должен быть одним из следующих: «EXEC» – если источник представляет собой последовательность операторов «EVAL» – если источник – это однократное выражение «один» -IF источник – это одно интерактивное утверждение
По желанию: Управления, которые должны быть активированы параметры компилятора, и какие дальние функции должны быть разрешены.
По желанию: Хотите избежать наследования вариантов компилятора и будущих функций?
Необязательно: оптимизировать = -1 Уровень оптимизации компилятора: -1 Выбирает уровень оптимизации интерпретатора, как указано -O-опции. 0 не выбирает оптимизацию и __debug___ true. 1 Указывает, что утверждения удаляются и устанавливают __debug__ к false. 2 Дополнительно удаляет DocStrings.
Возвращаемое значение аст Возвращает объект AST, который представляет код в виде абстрактного синтаксического дерева.

Упражнение для интерактивных оболочек: понимание компиляции ()

Рассмотрим следующий интерактивный код:

Упражнение : Распечатайте номер, связанные с Алисой в словаре!

Но прежде чем мы будем двигаться дальше, я рад представить вам мою новую книгу Python Python One-listers (Amazon Link).

Если вам нравятся одноклассники, вы будете любить книгу. Это научит вам все, что нужно знать о Одно строка кода Python. Но это тоже Введение в компьютерную науку , наука о данных, машин обучения и алгоритмы. Вселенная в одной строке Python!

Книга была выпущена в 2020 году с помощью книги по программированию мирового класса Nostarch Press (San Francisco).

Ссылка: https://nostarch.com/pythononeliners.

Как читать и компилировать код из файла

Скажем, у вас есть следующий код в файле кода:

# filename.py file
customers = {"Alice": 40000, "Bob": 33000}
print("Bob: " + str(customers['Bob']))

Как прочитать код из файла, компилируйте его и выполните его во время выполнения?

Вот код:

# 1. Read code from file
f = open('filename.py', 'r')
code = f.read()
f.close()

# 2. Compile code string
code_obj = compile(code, 'filename.py', 'exec')

# 3. Run the code object (ast)
exec(code_obj)

В качестве альтернативы вы также можете использовать следующий одноклассник для прочтения кода из файла:

code = open('filename.py').read()

Честно говоря, я не вижу огромную проблему, не закрывая файл, если у вас есть небольшой скрипт, и вы не доступаете в файл где-либо еще. Python автоматически закроет его после завершения кода.

Резюме

Python компилировать () Метод возвращает объект исполняемого кода как «абстрактное синтаксическое дерево», которое представлено как AST объект.

Есть много приложений AST такие как следующее: вы можете передать этот объект кода в EXEC () или Eval () функционирует и управляйте динамически в вашем коде Python.

Таким образом, вы можете программно создавать исходный код и выполнить его во время выполнения.

Чтобы использовать функцию, вы должны пройти строковый код, который должен быть выполнен, имя файла и режима выполнения.

Например Компиляция («Печать (« Привет ») ',' ',' Exec ') будет действительным вызовом, который создает код кода, состоящий из одной строки Печать ("Привет") Отказ

Я надеюсь, что вам понравилось статью! Чтобы улучшить свое образование Python, вы можете присоединиться к популярной академии по электронной почте Free Finxter:

Хотите увеличить свои навыки Python в веселой и легкой потребности? Рассмотрим следующие ресурсы и стать магистральным кодером!

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/python-compile/”