eval是python的乙個內建函式,其作用是返回傳入字串的表示式的結果1. 只提供第乙個引數,eval的作用就是將expression的引號去掉,保留引號中字元的原有屬性
m =
"123"
(eval
(m))
# 輸出123
x =
3print
(eval
("3 * x"))
(eval
("pow(2, x)"))
# 輸出9 8
n =
"abc"
(eval
(n))
# nameerror: name 'abc' is not define
# 在這個程式中,eval會剝去變數n的引號,發現abc不能像上乙個程式一樣計算
# eval就會認為abc是乙個變數名,並在當前作用域查詢abc變數
# 未能找到,報錯
abc =
"def"
n ="abc"
(eval
("n"))
(eval
(n))
# 第乙個eval嘗試剝去"n"的引號,n不能進行計算,於是認為n是乙個變數,查詢變數n並print(n)
# 第二個eval嘗試剝去n的引號,abc不能進行計算,於是認為abc是乙個變數,查詢變數abc並print(abc)
# eval函式還能將形似列表的字串變成真列表
m ="['123', '456', '789']"
(type
(m))
n =eval
(m)print
(type
(n))
(n)# 輸出:
# #
# ['123', '456', '789']
2. 同時提供globals這個引數m =
"[a, b, c]"
(eval
(m))
# 剝去m的引號發現是乙個列表,列表中是一些變數,於是查詢變數
# 未能找到,nameerror: name "a' is not defined
a =1
b =2
c =3
n ="['a', 'b', 'c']"
(eval
(n))
# 剝去n的引號發現是乙個列表,列表中是一些變數,於是查詢變數
# 全部找到,輸出:[1, 2, 3]
3. 同時提供locals這個引數a =
1b =
2c =
3dic =
(eval
("a + b"
, dic)
)# 輸出30
# 相當於eval的作用域變成了dic這個字典,外面的a,b都看不到了
(eval
("a + b + c"
, dic)
)# namerror: name 'c' is not defined
# 找不到變數c
a =
1b =
2c =
3dic1 =
dic2 =
(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...