介绍
小编给大家分享一下Python中eval函数是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家学习,希望大家阅读完这篇文章后大所收获、下面让我们一起去学习方法吧!
eval()函数用来执行一个字符串表达式,并返回表达式的值。
eval(表达式[,全局[,当地人]])
表达式:表达式。
全局:变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
当地人:变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
在祝辞祝辞x =7 在祝辞祝辞,eval (, & # 39; 3, *, x,,) 21 祝辞祝辞祝辞,eval(& # 39;战俘(2,2)& # 39;) 4 在祝辞祝辞n=81 在祝辞祝辞,eval (“n  +, 4“) 85
<>强默认作用域强>
在全局和本地两个参数省略的情况下,eval()函数在当前的作用域执行:
x =100 y =200 def 计算(): ,,,x =10 ,,,y =20 ,,,print (eval (“x  +, y")) 计算()
输出结果:
30
<强>全局作用域强>
Python的全局名字空间存储在一个叫全局()的字典对象中,局部名字空间存储在一个叫当地人()的字典对象中。我们可以用print()来查看该函数体内的所有变量名和变量值。
x =100 y =200 def 计算(): ,,,x =10 ,,,y =20 ,,,print (globals ()) ,,,print(当地人()) 计算()
输出结果:
{& # 39;__name__ # 39;:, & # 39; __main__ # 39;,, & # 39; __doc__& # 39;,,没有,,& # 39;__package__& # 39;,,没有,,& # 39;__loader__& # 39;:, & lt; _frozen_importlib_external。 SourceFileLoader object  at 0 x0000024ac58c7710>,, & # 39; __spec__& # 39;,,没有,,& # 39;__annotations__& # 39;:, {},, & # 39; __builtins__& # 39;:, & lt; module & # 39;内置# 39;,祝辞(内置),& # 39;__file__ # 39;:, & # 39; D:/代码/draw.py& # 39;,, & # 39; __cached__& # 39;,,没有,,& # 39;x # 39;:, 100年,& # 39;y # 39;:, 200年,& # 39;计算# 39;:, & lt; function  compute at 0 x0000024ac587c268>} {& # 39;x # 39;:, 10日,& # 39;y # 39;:, 20}
从结果可以看的到,全局变量()的结果包含了全局变量& # 39;x # 39;: 100 & # 39; y # 39;: 200年,而当地人()则包含的是局部变量& # 39;x # 39;: 10日& # 39;y # 39;: 20. eval函数包含全局参数则会使用全局作用域下的变量。
x =100 y =200 def 计算(): ,,,x =10 ,,,y =20 ,,,print (eval (“x  +, y",,全局变量())) ,,,, 计算()
输出结果:
300
<强>当地人作用域强>
如果同时包含全局和当地人参数,则会优先在本地作用域查找,如果本地作用域没有,才会查找全局作用域。
x =100 def 计算(): ,,,y =20 ,,,print (eval (“x  +, y",,全局变量(),当地人())) 计算()
输出结果:
120
<强>字符串转换成列表强>
s =,“[[1, 2], [3, 4], [5, 6]]“; print(类型) 时间=lst eval () print(类型(lst)) 打印(lst)
输出结果:
& lt; class & # 39; str # 39;比; & lt; class & # 39;列表# 39;比; [[1,2],[3,4],[5,6]]
<强>字符串转换成字典强>
s =,“{& # 39;数学# 39;:,90年,& # 39;中国# 39;:,100}“; print(类型) 时间=dic eval () print(类型(dic)) 打印(dic)
输出结果:
& lt; class & # 39; str # 39;比; & lt; class & # 39; dict # 39;比; {& # 39;数学# 39;:,90年,& # 39;中国# 39;:,100}
<强>字符串转换成元组强>
s =,“([1, 2], [3, 4], [5, 6])“; print(类型) 时间=tup eval () print(类型(锤头) 打印(锤头)
输出结果:
& lt; class & # 39; str # 39;比; & lt; class & # 39;元组# 39;比; ([1,2],[3,4],[5,6])
<强>需要注意的地方强>
eval()函数有安全性问题,比如用户恶意输入就会获得当前目录文件。
eval (“__import__(& # 39;操作系统# 39;)系统(& # 39;dir # 39;)“)Python中eval函数是什么