python eval函式簡單使用

2021-10-24 16:58:46 字數 2128 閱讀 2664

eval是python的乙個內建函式,其作用是返回傳入字串的表示式的結果

1. 只提供第乙個引數,eval的作用就是將expression的引號去掉,保留引號中字元的原有屬性

m =

"123"

print

(eval

(m))

# 輸出123

x =

3print

(eval

("3 * x"))

print

(eval

("pow(2, x)"))

# 輸出9 8

n =

"abc"

print

(eval

(n))

# nameerror: name 'abc' is not define

# 在這個程式中,eval會剝去變數n的引號,發現abc不能像上乙個程式一樣計算

# eval就會認為abc是乙個變數名,並在當前作用域查詢abc變數

# 未能找到,報錯

abc =

"def"

n ="abc"

print

(eval

("n"))

print

(eval

(n))

# 第乙個eval嘗試剝去"n"的引號,n不能進行計算,於是認為n是乙個變數,查詢變數n並print(n)

# 第二個eval嘗試剝去n的引號,abc不能進行計算,於是認為abc是乙個變數,查詢變數abc並print(abc)

# eval函式還能將形似列表的字串變成真列表

m ="['123', '456', '789']"

print

(type

(m))

n =eval

(m)print

(type

(n))

print

(n)# 輸出:

# #

# ['123', '456', '789']

m =

"[a, b, c]"

print

(eval

(m))

# 剝去m的引號發現是乙個列表,列表中是一些變數,於是查詢變數

# 未能找到,nameerror: name "a' is not defined

a =1

b =2

c =3

n ="['a', 'b', 'c']"

print

(eval

(n))

# 剝去n的引號發現是乙個列表,列表中是一些變數,於是查詢變數

# 全部找到,輸出:[1, 2, 3]

2. 同時提供globals這個引數
a =

1b =

2c =

3dic =

print

(eval

("a + b"

, dic)

)# 輸出30

# 相當於eval的作用域變成了dic這個字典,外面的a,b都看不到了

print

(eval

("a + b + c"

, dic)

)# namerror: name 'c' is not defined

# 找不到變數c

3. 同時提供locals這個引數
a =

1b =

2c =

3dic1 =

dic2 =

print

(eval

("a + b + c"

, dic1, dic2)

)# 輸出420

# dic2的優先順序高於dic1,先從dic2中查詢變數,未找到的再從dic1中查詢

python eval函式妙用

eval 函式用來執行乙個字串表示式,並返回表示式的值。以下是 eval 方法的語法 eval expression globals locals 例項1 返回表示式計算結果。x 7 eval 3 x 21 eval pow 2,2 42.可以把list,tuple,dict和string相互轉化。...

python eval 函式的使用

1.傳入python的幾種資料型別的字串,返回相應的資料型別物件 a eval 123 print a is type a b eval a 1,b print b is type b c eval print c is type c d eval a 1,2,3 print d is type d...

Python eval 函式說明

ev al str globals locals 函式將字串str當成有效python表示式來求值,並返回計算結果。例 eval 3 4 7 a 1 b eval a id a 505910960 id b 505910960 b 1000 id b 16834704 a 1 這裡牽涉到乙個概念 p...