说明:如果您有任何疑问或想咨询其他业务请拨打电话 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