the main difference between eval and exec is the functionality,
exec is server as king and eval are like one of the solider.
exec() function is execute anything which is passed in as an argument. it can run Python code itself. so exec() function is a very powerful and very dangerous function
eval() function is run arithmetic operation only like x*x and if x is 3 then eval will run x*x and give you returns is 9, that it is, eval() cant able to run any code of Python except the simple code
sample code of exec() function :
exec('print("hello world")')
it will print hello world
sample code of eval() function :
eval('print("hello world")')
it will print hello world again
let me explain in detail by example :
x=int(input("Enter the value of x:"))
expr = 'x*x'
y = eval(expr)
print(y)
you see i used eval() function to multiply x , i passed expression as string in eval() function
so if run above code
it will ask to input for value of x and if you enter 3 it will result 9
Enter the value of x: 3
9
let's introduce the exec() code in the above code
exec('x=int(input("Enter the value of x:"))')
expr = 'x*x'
y = eval(expr)
print(y)
now you can see i use exec() function to run x=int(input("Enter the value of x:")) instead of direct Python
and other code work same as above
Enter the value of x: 3
9
in output we did not notice that some code executed by exec() function
but if you try to run eval ('x=int(input("Enter the value of x:"))') it will generate error :
x=int(input("Enter the value of x:"))
^
SyntaxError: invalid syntax