說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732
全網監測海量數據按需發布監測預警
實時把握輿情動態精準追溯信息源頭
在python程序語言編寫的過程當中,有一些函數是我們經常可以看見的,但有些函數是比較罕見但確實會出現的,那今天小編就來說一說在日常使用過程當中,并不是經常常見的函數——pythoneval函數。
pythoneval函數——eval函數的作用是什么
eval函數是強大的數碼轉換引擎,字符串經eval轉換后得到一個javascript對象,
舉簡單例子:
vara=eval(“5″);等效于vara=5;
vara=eval(“’5′”);等效于vara=’5′;
varobj=eval(“({name:’cat’,color:’black’})”);等效于varobj={name:’cat’,color:’black’};
eval(“alert(‘helloworld!’);”);等效于alert(‘helloworld!’);
js的數據類型為弱類型,可以在定義的時候指定數據類型,也可以在運算過程中強制數據類型轉換
一個對象經過eval轉換后數據類型不確定,在相加過程中自動與其他數據類型一致
eval應用實例,如下:
后臺傳給前臺一個Json數據如
{“id”:1,”name”:”zhangsan”,”age”:30,”address”:”beijing”}
前臺這樣寫
function(returnedData,status){
varpeople=returnedData;
alert(people);
varid=people.id;
varname=people.name;
varage=people.age;
varaddress=people.address;
}
如上這樣寫得話,取到的returnedData是一個字符串而不是一個對象,所以下面取不到對象的屬性
如果將varpeople=eval(“(“+returnedData+”)”);
即可將people轉換成一個對象,也就取得對象的屬性了
pythoneval函數為何不常見
1、eval太神秘了,以至于很多人用錯。所以不推薦使用。
比如這段代碼你應該見過:
<imgsrc=”https://pic3.***.com/50/bf68046fed17de9b1e195e3d7fcb247f_hd.jpg”data-rawwidth=”632″data-rawheight=”136″class=”origin_imagezh-lightbox-thumb”width=”632″data-original=”https://pic3.***.com/bf68046fed17de9b1e195e3d7fcb247f_r.jpg”>
然而實際上,我們可以這樣寫:
<imgsrc=”https://pic3.***.com/50/0d2bb9e0fbb2e206fdf707ac20b9b943_hd.jpg”data-rawwidth=”642″data-rawheight=”132″class=”origin_imagezh-lightbox-thumb”width=”642″data-original=”https://pic3.***.com/0d2bb9e0fbb2e206fdf707ac20b9b943_r.jpg”>這并不是eval不好而是因為容易被用錯。
eval只是一個普通的函數,只不過他有一個快速通道通向編譯器,可以將string變成可執行的代碼。有類似功能的還有Function,setInterval和setTimeout。
2、eval不容易調試。用chromeDev等調試工具無法打斷點調試,所以麻煩的東西也是不推薦使用的…
3、說到性能問題,在舊的瀏覽器中如果你使用了eval,性能會下降10倍。在現代瀏覽器中有兩種編譯模式:fastpath和slowpath。fastpath是編譯那些穩定和可預測(stableandpredictable)的代碼。而明顯的,eval不可預測,所以將會使用slowpath,所以會慢。
還有一個是,在使用類似于ClosureCompiler等壓縮(混淆)代碼時,使用eval會報錯。
4、關于安全性,我們經常聽到eval是魔鬼,他會引起XSS攻擊,實際上,如果我們對信息源有足夠的把握時,eval并不會引起很大的安全問題。而且不光是eval,其他方式也可能引起安全問題。比如:
莫名其妙給你注入一個<script src=””>標簽,或者一段來歷不明的JSON-P請求,再或者就是Ajax請求中的eval代碼…
所以啊,只要你的信息源不安全,你的代碼就不安全。不單單是因為eval引起的。
你用eval的時候會在意XSS的問題,你越在意就越出問題,出的多了,eval就成噩夢了。
5、效率問題是程序邏輯問題。對于一些有執行字符串代碼需求的程序中,不用eval而用其他方式模擬反而會帶來更大的開銷。
以上就是有關pythoneval函數的所有內容,如果大家還想了解更多與之有關的信息,歡迎關注我們文軍營銷的官網,這是你還有更多精彩的內容等著你,不管你是查資料還是學習都能夠找到相應的信息。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732