1. 程式人生 > 實用技巧 >Python eval() 函式

Python eval() 函式

  • 描述
    eval() 函式用來執行一個字串表示式,並返回表示式的值。

  • 語法
    以下是 eval() 方法的語法:
    eval(expression[, globals[, locals]])

引數
expression -- 表示式。
globals -- 變數作用域,全域性名稱空間,如果被提供,則必須是一個字典物件。
locals -- 變數作用域,區域性名稱空間,如果被提供,可以是任何對映物件。

  • 返回值
    返回表示式計算結果。

例項

>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85

其他用法

將字串對應的名字的變數轉換成該變數對應的值

>>> x='7'
>>> x
'7'
>>> a=eval(x)
>>> a
7
>>> b='a'     # 等價於b='7'
>>> c=eval(b)
>>> c
7
>>>

eval 方法能使字串本身的引號去掉,保留字元的原本屬性

>>> a = "123"
>>> type(a)
<class 'str'>
>>> b = eval(a)
>>> b
123
>>> type(b)
<class 'int'>
>>>str1 = "[{11,22},{22,33},{33,44},{44,55}]"
>>>type(str1)
<class 'str'>
>>>list1 = eval(str1)
>>>list1
[{11,22},{22,33},{33,44},{44,55}]
>>>type(list)
<class 'list'>
>>>a = input("請輸入:")
>>>__import__("os").getcwd()
>>>eval(a)
C:\Python37  # 輸出結果是儲存程式碼的資料夾路徑

eval() 函式也可以直接用來提取使用者輸入的多個值

a,b=eval(input())
輸入:10,5 得到的結果是:a=10,b=5

eval() 函式可將看起來像列表的字串重新轉換為列表

例如: 字串 ['1709020230', '1707030416', '0', '0', '0'] 看起來好像是列表的模樣,實際為字串的字串還原回列表形態。

# 示例
zifu="['1709020230', '1707030416', '0', '0', '0']"
print(type(zifu))
ls=eval(zifu)
print(type(ls))
# 結果
<class 'str'>
<class 'list'>

這個可以應用在例如,讀取一個文字檔案中的列表,但是直接讀取出來的是字串格式,這時候可以用 eval() 來將字串格式的“假列表”轉換為真列表。