Функция eval 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

Python eval()

В этом руководстве мы узнаем о методе Python eval() с помощью примеров.

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

Пример

 число = 9
 

# eval выполняет умножение, переданное в качестве аргумента Square_number = eval('число * число')

печать (квадратное_число) # Вывод: 81

eval() Синтаксис

Синтаксис eval() is:

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

eval() Параметры

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

    9 0031 выражение — строка проанализировано и оценено как выражение Python
  • глобалы (опционально) — словарь
  • местные жители (опционально) — объект сопоставления. Словарь — это стандартный и широко используемый тип отображения в Python.

Использование глобальных переменных и локальных переменных будет рассмотрено далее в этой статье.


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

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


Пример 1: Как работает eval() в Python

 x = 1
 

print(eval('x + 1'))

Вывод

  2  

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


Пример 2. Практический пример для демонстрации использования eval()

 # Периметр квадрата
def рассчитать периметр (l):
    возврат 4*л
# Площадь площади
определение площади вычисления (l):
    вернуть л * л
выражение = ввод ("Введите функцию:")
для l в диапазоне (1, 5):
    если (выражение == 'рассчитать периметр (l)'):
 

print("Если длина равна ", l, ", Perimeter = ", eval(expression))

elif (выражение == 'calculateArea(l)'):

print("Если длина равна ", l, ", Area = ", eval(expression))

еще: print('Неверная функция') перерыв

Выход

  Введите функцию: calculateArea(l)
Если длина равна 1 , площадь = 1
Если длина равна 2, площадь = 4. 
Если длина равна 3 , площадь = 9
Если длина равна 4 , Area = 16  

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

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

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


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

 из математического импорта *
 

print(eval('dir()'))

Вывод

  ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'степени', '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 ', 'нан', 'ос', 'пермь', 'пи', 'мощность', 'прод', 'радианы', 'остаток', 'грех', 'шп', 'sqrt', 'тан', 'тан', 'тау', 'трунк']  

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

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

1. Когда пропущены и глобальные, и локальные параметры

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

 print(eval('dir()') 

2. Передача параметра globals; параметр locals опущен

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

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


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

 из математического импорта *
 

печать (оценка ('каталог()', {}))

# Код вызовет исключение

print(eval('sqrt(25)', {}))

Вывод

  ['__builtins__']
Traceback (последний последний вызов):
  Файл "", строка 5, в 
    печать (оценка ('sqrt (25)', {}))
  Файл "", строка 1, в 
NameError: имя 'sqrt' не определено  

Если вы передаете пустой словарь как globals , только __builtins__ доступны для выражения (первый параметр для оценка() ).

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


Пример 4. Предоставление доступа к определенным методам

 из математического импорта *
 

print(eval('dir()', {'sqrt': sqrt, 'pow': pow}))

Вывод

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

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

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

 из математического импорта *
имена = {'square_root': sqrt, 'power': pow}
 

print(eval('dir()', имена))

# Использование Square_root в выражении

print(eval('square_root(9)', имена))

Вывод

  ['__builtins__', 'power', 'square_root']
3,0  

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


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

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

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

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

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

 из математического импорта *
а = 169
 

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

Вывод

  13.0  

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


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

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

Встроенная функция Python eval(). Давайте разберемся с eval()… | Тану Н Прабху

Опубликовано в

·

Чтение: 3 мин.

·

19 октября 2019 г.

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

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

Tanu-N-Prabhu/Python

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

github.com

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

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

Синтаксис

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

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

Аргументы или параметры 90 016

Аргументы или параметры функции eval строки, а также необязательно глобальные и локальные переменные могут использоваться в качестве аргумента внутри функции 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(вычислить)
печать(выражение)
печать(тип(выражение))
------------------------------------ --------------------------------
485

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

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

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

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