eval是Python的一個內(nèi)置函數(shù),這個函數(shù)的作用是,返回傳入字符串的表達(dá)式的結(jié)果。即變量賦值時,等號右邊的表示是寫成字符串的格式,返回值就是這個表達(dá)式的結(jié)果。
成都創(chuàng)新互聯(lián)公司是一家集成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站頁面設(shè)計、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)站建設(shè)公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗,以探求精品塑造與理念升華,設(shè)計最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅持講誠信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。
eval()函數(shù)用來執(zhí)行一個字符串表達(dá)式,并返回表達(dá)式的值,還可以把字符串轉(zhuǎn)化為list、tuple、dict。eval函數(shù)的語法:eval(expression[,globals[,locals]])。
擴(kuò)展資料:
如果eval函數(shù)在執(zhí)行時遇到錯誤,則拋出異常給調(diào)用者;類似的函數(shù)是loadcode,loadcode并不立即執(zhí)行代碼,而是返回一個函數(shù)對象。并且loadcode支持路徑參數(shù),eval并不支持,eval并不支持代碼中的return語句,而是將代碼作為表達(dá)式直接計算出結(jié)果。
例如:
var d = eval("({name:'chentong'})")
alert(d.name);
參考資料來源:
百度百科-eval()
python中eval函數(shù)用法如下:
1、計算字符串中有效的表達(dá)式,并返回結(jié)果。
2、將字符串轉(zhuǎn)成相應(yīng)的對象(如list、tuple、dict和string之間的轉(zhuǎn)換)。
3、將利用反引號轉(zhuǎn)換的字符串再反轉(zhuǎn)回對象。
函數(shù)作用域:eval()函數(shù)并不會創(chuàng)建一個新的作用域,并且它的作用域就是它所在的作用域,有時候需要將eval()函數(shù)的作用域設(shè)置為全局,當(dāng)然可以將eval()在全局作用域中使用,這個時候可以用window.eval()的方式實現(xiàn)。
參數(shù)情況:
(1)如果參數(shù)是一個表達(dá)式,eval() 函數(shù)將執(zhí)行表達(dá)式。
(2)如果參數(shù)是Javascript語句,eval()將執(zhí)行 Javascript 語句。
注意:如果執(zhí)行結(jié)果是一個值就返回,不是就返回undefined,如果參數(shù)不是一個字符串,則直接返回該參數(shù)。
以python 3.8.5150.0版本為例,python中eval函數(shù)作用如下:
1、計算字符串中有效的表達(dá)式,并返回結(jié)果。
2、將字符串轉(zhuǎn)成相應(yīng)的對象(如list、tuple、dict和string之間的轉(zhuǎn)換)。
3、將利用反引號轉(zhuǎn)換的字符串再反轉(zhuǎn)回對象。
參數(shù)解析:
expression:這個參數(shù)是一個字符串,python會使用globals字典和locals字典作為全局和局部的命名空間,將expression當(dāng)作一個python表達(dá)式進(jìn)行解析和計算。
globals:這個參數(shù)控制的是一個全局的命名空間,也就是我們在計算表達(dá)式的時候可以使用全局的命名空間中的函數(shù),如果這個參數(shù)被提供了。
并且沒有提供自定義的builtins(python的內(nèi)建模塊),那么會將當(dāng)前環(huán)境中的builtins拷貝到提供的globals里,然后進(jìn)行計算。如果globals沒有被提供,則使用python的全局命名空間。
locals:這個參數(shù)控制的是一個局部的命名空間,和globals類似,不過當(dāng)它和globals中有重復(fù)的部分時,locals里的定義會覆蓋掉globals中的,也就是說當(dāng)globals和locals中有沖突的部分時,locals說了算,它有決定權(quán),以它的為準(zhǔn)。如果locals沒有被提供的話,則默認(rèn)為globals。
可以把list,tuple,dict和string相互轉(zhuǎn)化。
1、字符串轉(zhuǎn)換成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
type(a)
b = eval(a)
print b[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
type(b)
2、字符串轉(zhuǎn)換成字典
a = "{1: 'a', 2: 'b'}"
type(a)
b = eval(a)
print b{1: 'a', 2: 'b'}
type(b)
3、字符串轉(zhuǎn)換成元組
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
type(a)
b = eval(a)
print b([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
type(b)
4、eval()函數(shù)傳進(jìn)去的參數(shù)必須是字符串或者是對象
示例1:
a=10;
print(eval("a+1"))
執(zhí)行結(jié)果: 11
示例2:
a=10;
g={'a':4}
print(eval("a+1",g))
執(zhí)行結(jié)果:5
示例3:
a=10
b=20
c=30
g={'a':6,'b':8}
t={'b':100,'c':10}
print(eval('a+b+c',g,t))
執(zhí)行結(jié)果:116? (a=6, b=100, c=10)
5、eval函數(shù),eval去除引號后會檢查到它是不是可計算的,如果可計算會將計算的結(jié)果打印出來,如果不可計算直接返回結(jié)果
示例1:不可計算》》》直接輸出結(jié)果
s='["a","b","c"]'
print(eval(s))
執(zhí)行結(jié)果:?['a', 'b', 'c']
示例2:表達(dá)式可計算》》》計算之后輸出結(jié)果
s='abs(-10)'??
print(eval(s))
輸出結(jié)果:10?
5、eval()函數(shù),功能是將string變成算術(shù)表達(dá)式來執(zhí)行
示例1:
eval("1+2")
執(zhí)行結(jié)果: 3
示例2:
eval("print(\"hello, world\")")
輸出結(jié)果:hello, world