python內建函式-eval()函式與exec()函式的區別

panshao521_發表於2020-11-26

一、eval()函式

  • 可以用來執行一個字串表示式,並返回表示式的值
  • 字串裡不能定義變數
>>> eval("2*3")
6
>>> eval("max('abc')")
'c'
>>> eval('print("hello")')
hello
>>>

>>> a = eval('2*4')
>>> a
8
>>> a*2
16

>>> eval("a=1")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    a=1
     ^

二、exec()函式

  • 可以用來執行一個字串表示式,但取不到返回值
  • 字串裡,可以定義變數
>>> exec("a=100")
>>> a
100
>>> exec("print('hello')")
hello

>>> s = exec("2*3")
>>> print(s)
None
>>>

三、eval()與exec()的區別

1.相同點:都可以用來執行一個字串表示式

2.區別:

(1)eval()函式可以取到表示式的返回值,exec()函式取不到表示式的返回值。
(2)eval()函式,在字串裡不能定義變數,exec()函式在字串裡可以定義變數。

相關文章