描述
eval()函数实现将字符串转换为等价的可执行命令,执行一个字符串表达式,并返回表达式的值。
语法
eval(expression[,globals[,locals]])
expression–表达式
globals–变量作用域,全局命名空间
locals–变量作用域,局部命名空间
应用
eval('3+4')
#实现计算3+4运算,返回结果7
eval("{'name':'Tom','age':age}")
#将字符串转换为字典,返回值为字典数据
age=10
eval("{'name':'Tom','age':age}",locals())
#传入局部变量将字典中age的值设为10
eval("{'name':'Tom','age':age}",{"age":18})
#以字典的方式传入全局变量,将age的值设为18
eval("{'name':'Tom','age':age}",locals(),{"age":18})
eval("{'name':'Tom','age':age}",{"age":18},locals())
#变量传入的先后顺序决定起作用的顺序
eval()函数将字符串表达式的结果作为返回值。
def my_print():
print('hahaha')
my=eval('my_print')
my()
my()与my_print()效果一样,可以更加灵活的选择需要执行的函数。
注意
eval()函数要注意安全性,例如可以执行系统命令,删除文件等操作。
例如:
eval('__import__('os').system('ls /文件夹路径')')
可执行相应的系统操作,当我们的程序将input()函数输入内容执行eval()处理时,用户可以执行系统命令,对系统来说具有安全隐患。
声明
由于个人知识局限,所写的内容会存在错误,欢迎大家指出其中的问题,谢谢