Позволяет выполнить строку-выражение с кодом на Python
Функция eval() выполняет строку-выражение, переданную ей в качестве обязательного аргумента и возвращает результат выполнения этой строки.
Аргументами eval() являются строка-выражение expression , которую требуется исполнить и необязательные глобальные globals и локальные locals значения. Передаваемые в функцию глобальные переменные должны быть словарем dict . Передаваемые локальные переменные могут быть любым отображающим объектом.
Если глобальные переменные указаны, но словарь globals не содержит атрибута __builtins__ данные переданного словаря со значениями будут дополнены данными общего глобального пространства, перед разбором выражения. Таким образом, выражение будет иметь доступ ко всем встроенным модулям.
Если локальные locals переменные не указаны, то используется словарь глобального пространства.
Если оба словаря опущены, выражение выполняется с глобальными и локальными значениями в среде, где функция eval() вызывается. Обратите внимание, что eval() не имеет доступа к вложенным областям
Функция eval() также может быть использована для выполнения кода, который возвращает функция compile() . Если объект кода в compile() собран в режиме exec будет возвращено None .
Функции eval() можно передавать результаты функций globals() и locals() .
Если вам необходимо выполнить динамический код, записанный в строку, то обратитесь к документации по функции exec() .
Примеры выполнения строки-выражения с кодом функцией eval() .
>>> x = "print('Привет')" >>> eval(x) # Привет >>> y = 'print("5 + 10 =", (5+10))' >>> eval(y) # 5 + 10 = 15 >>> s=3 >>> eval('s==3') # True >>> eval('s + 1') # 4 >>> eval('s') # 3 >>> eval('str(s)+"test"') # '3test'
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
Функция Eval
Функция Eval используется для оценки выражение, которая приводит к в виде текстовой строки или числового значения.
Вы можете составить строку и передать ее функции Eval точно так же, как если бы эта строка была настоящим выражением. Функция Eval вычисляет строковое выражение и возвращает его значение. Например, Eval(«1 + 1») возвращает 2.
Если в функцию Eval передать строку, содержащую имя другой функции, функция Eval вернет значение, возвращаемое этой функцией. Например, Eval(«Chr$(65)») возвращает значение «A».
Eval ( строковое_выражение )
Аргумент строковое_выражение — это выражение, результатом вычисления которого является строка, состоящая из букв и цифр. В качестве строкового_выражения можно, например, указать функцию, которая возвращает строку или числовое значение. В других случаях это может быть ссылка на элемент управления формы. Аргумент строковое_выражение должен в результате вычисления давать строковое или числовое значение; его результатом не может быть объект объект Microsoft Access.
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
Примечание: Если вы указываете в аргументе строковое_выражение функции Eval имя другой функции, необходимо ставить после него в скобки. Например:
‘ ShowNames is user-defined function.
Debug.Print Eval(«ShowNames()»)
Debug.Print Eval(«StrComp(«»Joe»»,»»joe»», 1)»)
Замечания
Функцию Eval можно использовать в вычисляемый элемент управления в форме, отчете, макросах или модулях. Функция Eval возвращает variant, который является строкой или числом.
Аргументом строковое_выражение должно быть выражение, сохраненное в строке. Если функции Eval передать строку, которая содержит только текст, а не числовое выражение или имя функции, возникнет ошибка во время выполнения. Например, выполнение функции Eval(«Smith») приведет к ошибке.
С помощью функции Eval можно определить значение, хранящееся в свойстве Значение элемента управления. В следующем примере в функцию Eval передается строка, содержащая полную ссылку на элемент управления. В диалоговом окне будет отображаться текущее значение элемента управления.
Dim ctl As Control
Dim strCtl As String
Set ctl = Forms!Employees!LastName
strCtl = «Forms!Employees!LastName»
MsgBox («The current value of » & ctl.Name & _
» is » & Eval(strCtl))
Функция Eval дает возможность применять операторы выражений, недопустимые в модулях Visual Basic для приложений (VBA). Например, в коде программы нельзя использовать непосредственно операторы SQL Between. And или In, но их можно использовать в выражении, передаваемом в функцию Eval.
В следующем примере определяется, является ли значение элемента управления ShipRegion (Регион доставки) в форме Orders (Заказы) одним из заданных кодов регионов. Если поле содержит одно из таких обозначений, переменная intState примет значение True (-1). Обратите внимание, что для включения одной строки в другую нужно использовать одинарные кавычки (‘).
Dim intState As Integer
intState = Eval(«Forms!Orders!ShipRegion In » _
& «(‘AK’, ‘CA’, ‘ID’, ‘WA’, ‘MT’, ‘NM’, ‘OR’)»)
Примеры запросов
SELECT Eval(«15+3») AS Expr1 FROM ProductSales GROUP BY Eval(«15+3»);
Вычисляет строковую величину и результат. Результат: 18.
SELECT Eval(«Date()+month(date()))») AS NewDate FROM ProductSales Group by Eval(«Date()+month(date())»);
Оценивает строковую величину, определяет функции и выполняет их. Результат: текущая системная дата + текущий месяц, отображаемая в столбце NewDate.
Примеры VBA
В следующем примере предполагается, что имеется 50 функций, обозначенных A1, A2 и т. д. Функция Eval используется для последовательного вызова этих функций.
Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval(«A» & intI & «()»)
Next intI
End Sub
В следующем примере событие «Щелкните» активируется так же, как если бы пользователь нажал кнопку в форме. Если значение свойства OnClick кнопки начинается со знака равной (=), то есть это имя функции, функция Eval вызывает функцию, что эквивалентно запуску события Click. Если значение не начинается со знака равно, ему необходимо назвать макрос. Метод RunMacro объекта DoCmd выполняет именуемый макрос.
Dim ctl As Control
Dim varTemp As Variant
Set ctl = Forms!Contacts!HelpButton
If (Left(ctl.OnClick, 1) = » ocArticleFooterShareContainer»>
Что делает метод eval python?
Функция eval() анализирует переданную ей строку и если строка окажется кодом, то он будет выполнен:
x = 'print(55)' eval(x) # => 55 x = '4 + 7' print(eval(x)) # => 11 x = '2 > 11' print(eval(x)) # => False
Но стоит с большой осторожностью пользоваться этой функцией и уж точно ни в коем случае нельзя передавать ей данные, которые может ввести пользователь. Функция eval() выполнит любой код, который сможет распознать и если, допустим, ей передать строку rm -rf / , то корневая директория (если говорим о Linux) будет удалена без всяких вопросов и предостережений. Поэтому следует помнить о том, что пользоваться этой функцией надо с осторожностью и не предоставлять ей данные, вводимые пользователем.
eval(expression, globals=None, locals=None)
Метод eval() анализирует выражение, переданное этому методу, и запускает выражение (code) Python в программе.
Параметры ¶
Функция eval() принимает три параметра:
- expression — Разбирает и исполняет выражение expression . Выражение должно быть либо строкой, либо объектом кода.
- globals (необязательно) — словарь. Параметр globals должен быть словарем глобального пространства, относительно которого следует исполнить выражение. Если указан, но не содержит атрибута __builtins__ данные указанного пространства будут дополнены данными общего глобального пространства, перед разбором выражения. Таким образом, выражение будет иметь доступ ко всем встроенным модулям.
- locals (необязательно) — объект сопоставления. Параметр locals также должен быть словарем. Это локальное пространство, в котором следует исполнить выражение. Если не указано, то используется словарь глобального пространства.
Если не указан ни globals , ни locals , то выражение будет выполнено в среде, где был осуществлён вызов функции. В случае ошибок возбуждает SyntaxError .
Возвращаемое значение ¶
- Функция eval() возвращает результат, вычисленный из выражения.
Примеры ¶
x = 1eval('x+1') # 2
Данная функция также может быть использована для выполнения произвольных объектов кода, например тех, что возвращает compile . Если объект кода собран в режиме exec , будет возвращено None .