Функция eval python: Динамическое выполнение выражений в Python: функция eval()

Содержание

Как работает eval() в Python

Метод eval() анализирует выражение, переданное этому методу, и запускает выражение (код) Python внутри программы.

Проще говоря, функция eval() запускает код Python (который передается в качестве аргумента) в программе.

Синтаксис:

eval(expression, globals=None, locals=None)

Функция eval() принимает три параметра:

  1. выражение — строка анализируется и оценивается как выражение Python.
  2. globals (необязательно) — словарь.
  3. locals (необязательно) — объект отображения. Словарь — это стандартный и часто используемый тип сопоставления.

Метод eval() возвращает результат, вычисленный на основе выражения.

Пример 1

x = 1
print(eval('x + 1'))

Выход

2

Здесь функция eval() вычисляет выражение x + 1, и print используется для отображения этого значения.

Пример 2

# Perimeter of Square def calculatePerimeter(l): return 4*l # Area of Square def calculateArea(l): return l*l expression = input("Type a function: ") for l in range(1, 5): if (expression == 'calculatePerimeter(l)'): print("If length is ", l, ", Perimeter = ", eval(expression)) elif (expression == 'calculateArea(l)'): print("If length is ", l, ", Area = ", eval(expression)) else: print('Wrong Function') break

 

Выход

Type a function: calculateArea(l)
If length is  1 , Area =  1
If length is  2 , Area =  4
If length is  3 , Area =  9
If length is  4 , Area =  16

Предупреждения при использовании eval()

Рассмотрим ситуацию, когда вы используете систему Unix (macOS, Linux и т. Д.) И импортировали модуль ОС. Модуль os предоставляет переносимый способ использования функций операционной системы, таких как чтение или запись в файл.

Если вы разрешаете пользователям вводить значение с помощью eval (input()), пользователь может вводить команды для изменения файла или даже удаления всех файлов с помощью команды: os.system (‘rm -rf *’).

Если вы используете eval (input()) в своем коде, рекомендуется проверить, какие переменные и методы может использовать пользователь. Вы можете увидеть, какие переменные и методы доступны, используя метод dir().

from math import *
print(eval('dir()'))

Выход

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'os', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Ограничение использования доступных методов и переменных в eval()

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

1 Если опущены и глобальные, и локальные параметры

Если оба параметра опущены (как в наших предыдущих примерах), выражение выполняется в текущей области. Вы можете проверить доступные переменные и методы, используя следующий код:

print(eval('dir()')

2 Передача глобальных параметров

Параметры globals и locals (словари) используются для глобальных и локальных переменных соответственно. Если словарь locals опущен, по умолчанию используется словарь globals . Это означает, что глобальные переменные будут использоваться как для глобальных, так и для локальных переменных.

Примечание. Вы можете проверить текущий глобальный и локальный словарь в Python, используя встроенные методы globals() и locals() соответственно.

3 Передача пустого словаря в качестве параметра глобальных переменных

from math import *
print(eval('dir()', {}))

# The code will raise an exception
print(eval('sqrt(25)', {}))

Выход

['__builtins__']
Traceback (most recent call last):
  File "<string>", line 5, in <module>
    print(eval('sqrt(25)', {}))
  File "<string>", line 1, in <module>
NameError: name 'sqrt' is not defined

Если вы передаете пустой словарь в качестве глобальных , для выражения доступны только __builtins__ (первый параметр eval()).

Несмотря на то, что мы импортировали математический модуль в приведенную выше программу, выражение не может получить доступ к функциям, предоставляемым математическим модулем.

4 Обеспечение доступности определенных методов

from math import *
print(eval('dir()', {'sqrt': sqrt, 'pow': pow}))

Выход

['__builtins__', 'pow', 'sqrt']

Здесь выражение может использовать только методы sqrt() и pow() вместе с __builtins__.

Также можно изменить имя метода, доступного для выражения, по вашему желанию:

from math import *
names = {'square_root': sqrt, 'power': pow}
print(eval('dir()', names))

# Using square_root in Expression
print(eval('square_root(9)', names))

Выход

['__builtins__', 'power', 'square_root']
3.0

В приведенной выше программе square_root() вычисляет квадратный корень с помощью sqrt(). Однако попытка использовать sqrt() напрямую вызовет ошибку.

5 Ограничение использования встроенных модулей

Вы можете ограничить использование __builtins__ в выражении следующим образом:

eval(expression, {'__builtins__': None})

3 Передача как глобальных, так и локальных словарей

Вы можете сделать необходимые функции и переменные доступными для использования, передав словарь locals. Например:

from math import *

a = 169
print(eval('sqrt(a)', {'__builtins__': None}, {'a': a, 'sqrt': sqrt}))

Выход

13. 0

В этой программе выражение может иметь только метод sqrt() и переменную a. Все остальные методы и переменные недоступны.

Ограничение использования eval() путем передачи глобальных и локальных словарей сделает ваш код безопасным, особенно когда вы используете ввод, предоставленный пользователем методу eval().

Примечание. Иногда eval() небезопасен даже с ограниченными именами. Когда объект и его методы становятся доступными, можно делать практически все. Единственный безопасный способ — это проверить введенные пользователем данные.

16651cookie-checkКак использовать метод eval() в Python?yes

Функция eval() в Python: как работает и примеры

Функция eval() в Python используется для синтаксического анализа строки выражения, как выражения Python и последующего ее выполнения.

Синтаксис функции:

eval(expression, globals=None, locals=None)

expression – обязательный строковый параметр, он анализируется и выполняется, как выражение Python.

globals – словарь, используемый для определения доступных для выполнения выражений. Стандартные встроенные методы доступны, если явно не ограничены с помощью элемента ‘__builtins__’: None.

locals – используется для указания локальных переменных и методов, доступных для функции eval().

Содержание

  1. Пример
  2. eval() с пользовательским вводом
  3. Риски безопасности
  4. Глобальные и локальные переменные

Пример

Давайте сначала рассмотрим простой пример функции eval() в python.

x = 1

print(eval('x==1'))

print(eval('x+2'))

Вывод:

True
3

eval() с пользовательским вводом

Приведенный выше пример функции eval() очень ограничен и не оправдывает ее возможности. Сила функции заключается в динамическом выполнении операторов. Мы можем выполнять произвольные объекты кода с помощью функции eval().

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

# eval() with user input
from math import *

for l in range(1, 3):

    func = input("Enter Math Function to Evaluate:\n")
    try:
        print(eval(func))
    except Exception as ex:
        print(ex)
        break
print('Done')

На изображении ниже показан пример выполнения указанного выше скрипта Python.

Без функции eval мы не можем выполнять команды, введенные пользователем. В этом сила функции eval().

Риски безопасности

Что делать, если у нас есть импортированный модуль os и пользователь вводит команду os.system (‘rm -rf /’) для выполнения. Это приведет к удалению системных файлов и повреждению нашей среды.

Вот почему, когда вы используете функцию eval() для выполнения кода ввода пользователя, вам необходимо убедиться, что введенные пользователем данные сначала проверяются, и если они в порядке, то выполняется только их. Вот тогда и пригодятся параметры globals и locals.

Глобальные и локальные переменные

Прежде чем мы решим, какие функции мы должны сделать доступными для eval(), нам нужно выяснить, какие все функции и переменные присутствуют в глобальной и локальной области. Мы можем найти эту информацию с помощью встроенных функций locals(), globals() и dir().

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

from math import *

def square_root(n):
   return sqrt(n)

print(globals()) # dictionary representing the current global symbol table.
print(locals()) # dictionary representing the current local symbol table.
print(dir()) # list of names in the current local scope

Вывод:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x105b11400>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/eval_example. py', '__cached__': None, 'acos': <built-in function acos>, 'acosh': <built-in function acosh>, 'asin': <built-in function asin>, 'asinh': <built-in function asinh>, 'atan': <built-in function atan>, 'atan2': <built-in function atan2>, 'atanh': <built-in function atanh>, 'ceil': <built-in function ceil>, 'copysign': <built-in function copysign>, 'cos': <built-in function cos>, 'cosh': <built-in function cosh>, 'degrees': <built-in function degrees>, 'erf': <built-in function erf>, 'erfc': <built-in function erfc>, 'exp': <built-in function exp>, 'expm1': <built-in function expm1>, 'fabs': <built-in function fabs>, 'factorial': <built-in function factorial>, 'floor': <built-in function floor>, 'fmod': <built-in function fmod>, 'frexp': <built-in function frexp>, 'fsum': <built-in function fsum>, 'gamma': <built-in function gamma>, 'gcd': <built-in function gcd>, 'hypot': <built-in function hypot>, 'isclose': <built-in function isclose>, 'isfinite': <built-in function isfinite>, 'isinf': <built-in function isinf>, 'isnan': <built-in function isnan>, 'ldexp': <built-in function ldexp>, 'lgamma': <built-in function lgamma>, 'log': <built-in function log>, 'log1p': <built-in function log1p>, 'log10': <built-in function log10>, 'log2': <built-in function log2>, 'modf': <built-in function modf>, 'pow': <built-in function pow>, 'radians': <built-in function radians>, 'remainder': <built-in function remainder>, 'sin': <built-in function sin>, 'sinh': <built-in function sinh>, 'sqrt': <built-in function sqrt>, 'tan': <built-in function tan>, 'tanh': <built-in function tanh>, 'trunc': <built-in function trunc>, 'pi': 3.
141592653589793, 'e': 2.718281828459045, 'tau': 6.283185307179586, 'inf': inf, 'nan': nan, 'square_root': <function square_root at 0x105b6a2f0>} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x105b11400>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/eval_example.py', '__cached__': None, 'acos': <built-in function acos>, 'acosh': <built-in function acosh>, 'asin': <built-in function asin>, 'asinh': <built-in function asinh>, 'atan': <built-in function atan>, 'atan2': <built-in function atan2>, 'atanh': <built-in function atanh>, 'ceil': <built-in function ceil>, 'copysign': <built-in function copysign>, 'cos': <built-in function cos>, 'cosh': <built-in function cosh>, 'degrees': <built-in function degrees>, 'erf': <built-in function erf>, 'erfc': <built-in function erfc>, 'exp': <built-in function exp>, 'expm1': <built-in function expm1>, 'fabs': <built-in function fabs>, 'factorial': <built-in function factorial>, 'floor': <built-in function floor>, 'fmod': <built-in function fmod>, 'frexp': <built-in function frexp>, 'fsum': <built-in function fsum>, 'gamma': <built-in function gamma>, 'gcd': <built-in function gcd>, 'hypot': <built-in function hypot>, 'isclose': <built-in function isclose>, 'isfinite': <built-in function isfinite>, 'isinf': <built-in function isinf>, 'isnan': <built-in function isnan>, 'ldexp': <built-in function ldexp>, 'lgamma': <built-in function lgamma>, 'log': <built-in function log>, 'log1p': <built-in function log1p>, 'log10': <built-in function log10>, 'log2': <built-in function log2>, 'modf': <built-in function modf>, 'pow': <built-in function pow>, 'radians': <built-in function radians>, 'remainder': <built-in function remainder>, 'sin': <built-in function sin>, 'sinh': <built-in function sinh>, 'sqrt': <built-in function sqrt>, 'tan': <built-in function tan>, 'tanh': <built-in function tanh>, 'trunc': <built-in function trunc>, 'pi': 3. 141592653589793, 'e': 2.718281828459045, 'tau': 6.283185307179586, 'inf': inf, 'nan': nan, 'square_root': <function square_root at 0x105b6a2f0>} ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'square_root', 'tan', 'tanh', 'tau', 'trunc']

Это множество функций, к которым у eval() будет доступ. Большинство из них взяты из модуля __builtins__ и math.

Посмотрим, что произойдет, если мы укажем значение globals, как пустой словарь в функции eval.

print(eval('dir()',{}))

Вывод:

['__builtins__']

Таким образом, для функции eval по-прежнему доступны встроенные методы. Если вы хотите ограничить доступ только к нескольким встроенным методам, вы можете указать его значение для глобальных переменных. Например, приведенный ниже код позволяет функции eval() выполнять только встроенную функцию min.

print(eval('min(1,2)',{'__builtins__':{'min': min}})) # 1

Давайте посмотрим на другой пример, где я предоставляю значение locals и отключаю доступ ко всем встроенным функциям для eval().

y=5
print(eval('y+1',{'__builtins__': None}, {'y': y})) # 6

Давайте посмотрим на последний пример, в котором я разрешаю доступ только к некоторым методам из математического модуля. Мы также сопоставляем square_root с функцией sqrt для удобства чтения человеком.

from math import *

for l in range(1, 3):
    func = input("Enter Math Function to Evaluate.\nAllowed Functions are: square_root(x) and pow(x,y):\n")
    try:
        print(eval(func, {'square_root': sqrt, 'pow': pow}))
    except Exception as ex:
        print(ex)
        break
print('Done')

Пример вывода:

Enter Math Function to Evaluate. 
Allowed Functions are: square_root(x) and pow(x,y):
square_root(16)
4.0
Enter Math Function to Evaluate.
Allowed Functions are: square_root(x) and pow(x,y):
log10(100)
name 'log10' is not defined
Done

Я ничего не указал для встроенных функций, поэтому они будут доступны для функции eval().

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

Enter Math Function to Evaluate.
Allowed Functions are: square_root(x) and pow(x,y):
min(5,4)
4
Enter Math Function to Evaluate.
Allowed Functions are: square_root(x) and pow(x,y):
max(10,20)
20

eval в Python — GeeksforGeeks

Функция Python eval() анализирует аргумент выражения и оценивает его как выражение Python и запускает выражение (код) Python в программе.

Python eval() Синтаксис функции:

Синтаксис: eval(выражение, глобальные значения=нет, локальные значения=нет)

Параметры:

        выражение Python и вычисляется как выражение4
      • глобальные [опционально]: Словарь для указания доступных глобальных методов и переменных.
      • locals [необязательно]: Другой словарь для указания доступных локальных методов и переменных.

      Возврат: Возвращает вывод выражения.

Python eval() Function Example:

Python3

print ( eval ( '1+2' ))

Вывод:

 3 

Пример 1: Демонстрация работы eval()

Давайте рассмотрим это с помощью простой программы на Python. function_creator — это функция, оценивающая математические функции, созданные пользователем.

Python3

DEF FUNCTION_CREATOR ():

EXPRER. 0045 = input ( "Enter the function(in terms of x):" )

 

    

     x = int ( input ( "Enter the value of x:" ))

 

    

     y = eval (expr)

 

    

     print ( "y =" , y)

 

 

if __name__ = = "__main__" :

     function_creator()

Вывод:

 Введите функцию(xx+2)1x*(xx+2)1*(x*(x)1)
Введите значение x:3
у = 60 

Давайте немного проанализируем код:

  • Приведенная выше функция принимает любое выражение в переменной x в качестве входных данных.
  • Затем пользователь должен ввести значение x .
  • Наконец, мы оцениваем выражение Python, используя встроенную функцию eval() , передавая expr в качестве аргумента.

Вычисление выражений с использованием функции Python eval()

Пример 1. Математические операции с использованием функции eval

Вычисление математического выражения с использованием значения переменной x.

Python3

expression = 'x*(x+1)*(x+2)'

print (expression)

 

x = 3

 

результат = оценка (выражение)

печать (ульт) 0046

Вывод:

 х*(х+1)*(х+2)
60 

Пример 2: логические экспрессии с использованием Python Eval () Функция

Python3

x = 5

444 . = 4' ))

 

x = Нет

печать ( eval ( 'x is None' ))

3 False

4 Выход:

4 True

Пример 3. Проверка условий с помощью функции Python eval()

Мы также можем оценить проверку условий с помощью функции Python eval().

Python3

символов = ( 'a' , 60 9 4b 09 0046 'C' )

Печать ( "'D' в Chars Tuple?" , Eval ( "D 'in' in gh

NUM = 100

Печать (NUM, "> 50?

 

число = 20

Печать (NUM, " - равно?

Вывод:

 'd' в кортеже символов? ЛОЖЬ
100 > 50? Истинный
20 четно? True 

Проблемы уязвимости с функцией Python eval()

Python3

def secret_function():

   return "Secret key is 1234"

 

def solve_expression():

  

  

   expression = Вход ( "Введите функцию (в соответствии с x):" )

0046 x = Вход ( "Введите значение x:" )

9005

9005

400464646464646464646464646464646464646464664666666666666666666666666666666666666666666666666666666666666666666666666. , Eval (выражение))

Solve_expression ()

Наша текущая версия Solve_express 4. Пользователь может легко открыть скрытые значения в программе или вызвать опасную функцию, так как eval выполнит все, что ему передано.

Например, если вы вводите так:

 Введите функцию (в терминах x):secret_function()
Введите значение x:0 

Вы получите результат:

 Результат: Секретный ключ 1234 

Также рассмотрим ситуацию, когда вы импортировали модуль os в свою программу Python. Модуль os предоставляет портативный способ использования функций операционной системы, таких как чтение или запись файла. Одна команда может удалить все файлы в вашей системе. Конечно, в большинстве случаев (например, в настольных программах) пользователь не может сделать больше, чем мог бы, написав свой собственный скрипт на Python, но в некоторых приложениях (например, в веб-приложениях, киоск-компьютерах) это может быть рискованно!

Решение состоит в том, чтобы ограничить eval только теми функциями и переменными, которые мы хотим сделать доступными.

Обеспечение безопасности eval()

Функция eval позволяет явно передавать список функций или переменных, к которым она имеет доступ. Нам нужно передать его как аргумент в виде словаря.

Python3

из math импорт *

 

def secret_function():

     return "Secret key is 1234"

 

def function_creator():

 

    

expr = ввод ( "Введите функцию (в терминах x):" )

 

9 0 6 44

05

     x = int ( input ( "Enter the value of x:" ))

 

    

     safe_dict[ 'x' ] = x

Y = Eval (expr expr. 0046

 

    

     print ( "y = {}" . format (y))

 

 

if __name__ = = "__main__" :

Safe_List = [ '' [ ' = [ ' = [ ' = .0046 'asin' , 'atan' , 'atan2' , 'ceil' , 'cos' ,

                  'cosh' , 'degrees' , 'e' , 'exp' , 'fabs' , 'floor' ,

                  'fmod , 'frexp' , 'hypot' , 'ldexp' , 'log' , 'log10' ,

                  ' modf' , 'pi' , 'pow' , 'radians' , 'sin' , 'sinh' , 'sqrt' ,

                  'tan' , 'tanh' ]

 

    

     safe_dict = {}

     for safe_key in safe_list:

         safe_dict[safe_key] = locals (). get(safe_key)  

05

     function_creator()

Теперь, если мы попытаемся запустить вышеуказанные программы, например:

 Введите функцию (в терминах x):secret_function
Введите значение x:0 

Мы получим вывод:

 Ошибка имени: имя «secret_function» не определено 

Давайте проанализируем приведенный выше код шаг за шагом:

  • Сначала мы создаем список методы, которые мы хотим разрешить как безопасный_список .
  • Далее мы создаем словарь безопасных методов. В этом словаре ключей — это имена методов, а значения — их локальные пространства имен.
 safe_dict = {}
для safe_key в safe_list:
    safe_dict[safe_key] = locals().get(safe_key) 
  • locals() — это встроенный метод, который возвращает словарь, отображающий все методы и переменные в локальной области видимости с их пространствами имен.
 safe_dict['х'] = х 

Здесь мы также добавляем локальную переменную x в safe_dict. Ни одна локальная переменная, кроме x , не будет идентифицирована функцией eval .

  • eval принимает в качестве аргументов словари локальных , а также глобальных переменных. Итак, чтобы убедиться, что ни один из встроенных методов не доступен для выражения eval , мы также передаем другой словарь вместе с safe_dict , как показано ниже:0021
 y = eval(expr, {}, safe_dict) 

Таким образом, мы сделали нашу функцию eval защищенной от любых возможных взломов!

Использование функции Python eval()

eval() редко используется из-за соображений безопасности, как мы рассмотрели выше.

Тем не менее, это удобно в некоторых ситуациях, таких как:

  • Вы можете использовать его, чтобы позволить пользователям вводить свои собственные «скриптлеты»: небольшие выражения (или даже небольшие функции), которые можно использовать для настройки поведение сложной системы.
  • eval() также иногда используется в приложениях, которым необходимо вычислять математические выражения. Это намного проще, чем писать парсер выражений.

Встроенная функция Python eval(). Давайте разберемся с eval()… | Автор Tanu N Prabhu

Давайте разберемся со встроенной функцией eval() в python.

Это будет короткая статья о функции eval в python, в которой я буду объяснять вам функцию eval, ее синтаксис и несколько вопросов, которые часто задают на собеседованиях, чтобы вы четко поняли ее и легко ответили на эти вопросы. Чтобы получить полный код, нажмите на мой репозиторий GitHub внизу:

Tanu-N-Prabhu/Python

Вы не можете выполнить это действие в данный момент. Вы вошли в другую вкладку или окно. Вы вышли из системы на другой вкладке или…

github.com

Давайте начнем:

Ответ: eval — это встроенная функция, используемая в python, функция eval анализирует аргумент выражения и оценивает его как python выражение. Проще говоря, функция eval оценивает «String» как выражение Python и возвращает результат в виде целого числа.

Синтаксис

Синтаксис функции eval показан ниже:

  eval(выражение, [глобальные [ локальные]])  

Аргументы или параметры функции eval

7 строки, а также необязательно глобальные и локальные переменные могут использоваться в качестве аргумента внутри функции eval, но глобальные переменные должны быть представлены как словарь, а локальные переменные — как сопоставленный объект.

Возвращаемое значение

Возвращаемое значение будет результатом оцениваемого выражения. Часто возвращаемый тип будет целым числом.

Функция Eval в основном используется в ситуациях или приложениях, которым необходимо вычислять математические выражения. Также, если пользователь хочет преобразовать строку в код, он может использовать функцию eval, потому что функция eval оценивает строковое выражение и в результате возвращает целое число.

Теперь вы все знаете, что input() принимает пользовательский ввод, но когда пользователь вводит целое число в качестве входных данных, функция ввода возвращает строку, но в случае eval она оценит возвращаемое значение из строки в целое число. . Я знаю, что большинство из вас запутались, позвольте мне развеять ваше замешательство, приведя пример:

 input = input("Введите любое число по вашему выбору:") 
print(input)
print(type(input))
-------------------- ------------------------------------------------ Войти любое число на ваш выбор: 10 + 10
10 + 10

Как я уже сказал, я ввел целое число 10+ 10 , где я ожидал результата 20 (10 + 10) , но метод ввода вернул строку того же ввода.

 eval = eval(input("Введите любое число по вашему выбору")) 
print(eval)
print(type(eval))
------------------------------------ -------------------------------- Введите любое число по вашему выбору: 10 + 10
20

В случае eval он вернул оцененное выражение 20 в виде целого числа, учитывая строку в качестве входных данных. 10 + 10 — это выражение, которое в результате возвращает 20.

Да, мы можем выполнять математические операции, используя функцию eval, как показано ниже:

 оценка = ввод («Введите, какую операцию должен выполнить x: «) 
печать (оценка)
печать (тип (оценка))
------------------- --------------------------------------------------
Введите, какую операцию должен выполнить x: x + x + 100 - 35 + 5 * 80
x + x + 100 - 35 + 5 * 80
x = 10
print(type(x) )
------------------------------------------------ -------------------- <класс 'int'> выражение = eval(вычислить)
print(выражение)
print(тип(выражение))
------------------------------------ --------------------------------
485

Смотрите, как я сказал, если вы вводите ввод в виде строки, а функция eval оценивает выражение и возвращает результат в виде целого числа.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *