Python中eval函数是什么

  介绍

小编给大家分享一下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函数是什么