Python 3 - exec()Vs eval() - 表达式评估

时间:2017-06-22 15:53:36

标签: python

阅读query

下面的python代码仍然不清楚,

>>> exec('print(5+10)')
15
>>> eval('print(5+10)')
15

bash世界,

exec用给定的命令替换shell。

eval以shell命令执行参数。

问题:

表达式是计算值

的计算

要评估python中的任何表达式(在我的情况下,来自python代码的print(5+10)),eval()的工作方式与exec()有何不同?

1 个答案:

答案 0 :(得分:4)

  

eval()的工作原理与exec()有何不同?

在您的两种情况下,eval()exec() ,执行相同的操作。他们打印表达式的结果。但是,它们仍然不同。

eval()函数只能执行Python 表达式,而exec()函数可以执行任何有效的Python代码。这可以通过几个例子看出:

>>> eval('1 + 2')
3
>>> exec('1 + 2')
>>> 
>>> eval('for i in range(1, 11): print(i)')
Traceback (most recent call last):
  File "<pyshell#45>", line 1, in <module>
    eval('for i in range(1, 11): print(i)')
  File "<string>", line 1
    for i in range(1, 11): print(i)
      ^
SyntaxError: invalid syntax
>>> exec('for i in range(1, 11): print(i)')
1
2
3
4
5
6
7
8
9
10
>>>