Python exec和eval方法使用注意,勿滥用

使用exec,eval函数,动态执行Python代码片段

eval()函数

eval()函数执行一个Python字符串表达式,并能返回表达式结果

注意:该函数只能是单个表达式,不支持复杂的代码逻辑,例如赋值操作、循环语句等

函数定义

eval(expression, globals, locals)

  • expression:必须,Python表达式字符串
  • globals:可选,dict结构,存放全局变量
  • locals:可选,dict结构,存放局部变量
  • 返回值:表达式执行结果

使用示例:

Python exec和eval方法使用注意,勿滥用

exec()函数

可以动态执行一段Python代码,代码段是可以非常复杂

在Python2中,exec是一个关键字语句,而在Python3中,exec变成了一个函数,跟print一样
exec() 与 eval() 功能相似,三个参数含义和作用相近

函数定义

exec(object, globals, locals)

参数说明:

  • object:必选,Python代码段字符串
  • globals:可选,dict结构,存放全局变量
  • locals:可选,dict结构,存放局部变量
  • exec函数没有返回值
Python exec和eval方法使用注意,勿滥用

eval()与exec()区别

  • exec()第一个参数是代码块,而eval()是一个表达式字符串
  • eval()可以返回表达式的值,exec()执行返回值是None
  • eval()只能接一个单一字符串表达式,exec()可以是复杂的代码逻辑

避免使用eval()、exec()

尽量避免使用eval()、exec(),使用该函数可能会引起“代码注入”的安全问题

Python exec和eval方法使用注意,勿滥用

最后

如果内容有误,欢迎评论区指正!

喜欢我的朋友们,麻烦点一波关注,谢谢!

Python exec和eval方法使用注意,勿滥用


分享到:


相關文章: