exec()和eval()的区别

eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提供),相当于一个 Python 的解释器。

们的区别在于,eval() 执行完会返回结果,而 exec() 执行完不返回结果。

举例:

语法

以下是 eval() 方法的语法:

eval(expression, globals=None, locals=None)

参数

  • expression -- 表达式。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

globals和locals参数是可选的,如果提供了globals参数,那么它必须是dictionary类型;如果提供了locals参数,那么它可以是任意的map对象。

python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。我们可以用print (locals())来查看该函数体内的所有变量名和变量值。

返回值

返回表达式计算结果。

x=9
w=eval('x+2')
print(w)#gloas()用法a=1
b=1
print(eval("a+b"))
def func():a=2b=2#不加gloas()会在局部查找a和b的范围print(eval("a+b")) #输出4#加了gloas()会在全局搜索a和b的范围print(eval("a+b",globals())) #输出2#局部查找print(eval("a+b",globals(),locals())) #2func()

输出:

11
2
4
2
4Process finished with exit code 0

把字符串编程list、dict、tuple

n='[[1,2],[3,4]]'
print(eval(n))
m='(1,2,3)'
print(eval(m))
c="{'a':1}"
print(eval(c))
[[1, 2], [3, 4]]
(1, 2, 3)
{'a': 1}

exec()语法:

相比于 eval,exec可以执行更复杂的 Python 代码。eval执行单挑python语句,exec执行多条,或者更加复杂代码。

需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement),但是Python 2中有一个 execfile() 函数。可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的 exec() 函数中去了。

参数

  • obj -- 要执行的表达式。

返回值

exec 返回值永远为 None。

exec ("print ('hello world cup')")输出:
hello world cup
expr = """
z = 30
sum = x + y + z
print(sum)
"""def funcs():y = 20exec(expr)exec(expr,{"x":1,"y":2})exec(expr,{"x":1,"y":10},{"x":20,"y":30})funcs()
59
33
80

exec()和eval()相关推荐

  1. python exec函数和eval函数_Python exec()和eval()的使用注意事项

    使用 exec() 和 eval() 函数时,一定要记住,它们的第一个参数是字符串,而字符串的内容一定要是可执行的代码. 以 eval() 函数为例,用代码演示常犯的错误: s="hello ...

  2. eval python定义变量,表达式与语句 局部变量与全局变量 exec与eval

    表达式与语句 局部变量与全局变量 exec与eval Python有时需要动态的创造Python代码,然后将其作为语句执行  或  作为表达式计算. exec用于执行存储在字符串中的Python代码. ...

  3. Python 的 eval() 与 exec()区别

    Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个. 大部分函数是我们经常使用的,例如 print().open ...

  4. 深度辨析 Python 的 eval() 与 exec()

    Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个. 大部分函数是我们经常使用的,例如 print().open ...

  5. python内置函数 exec eval compile

     1.exec eval compile   ·exec & eval exec和eval都可以执行储存在字符串或文件中的 Python 语句. 用法:exec(object[, global ...

  6. python实现规则引擎_python – 如何在不使用eval()或exec()的情况下创建规则引擎?...

    我的数据库中有一个简单的规则/条件表,用于为我们的某个系统生成警报.我想创建规则引擎或特定于域的语言. 存储在此表中的简单规则是..(省略此处的关系) if temp > 40 send ema ...

  7. 内置函数 匿名函数 eval exec execute compile sorted map filter等常见函数 repr chr ord...

    内置函数 什么是内置函数? 就是python给你提供的. 拿来直接用的函数, 比如print., input等等. 截⽌止 到python版本3.6.2 python⼀共提供了了68个内置函数. 他们 ...

  8. 人生苦短我用python梗_人生苦短我用python: eval,e

    01.函数原型 eval(expression[, globals[, locals]]) python提供内置函数 eval 可以执行或者解释一串python表达式,这里的表达式仅限于一些运算操作, ...

  9. python exec_Python exec()

    python exec Python exec() function provides support for dynamic code execution. Python exec()函数提供了对动 ...

最新文章

  1. Use PowerShell to Replace netdom Commands to Join the Domain
  2. PHP跳转到另一个画面,并且带着该行内的一个数值作为参数传递给下一个页面.能给例子吗...
  3. Spring Boot Spring MVC 异常处理的N种方法 1
  4. 计算机辅助设计受力分析,假肢接受腔的受力分析和计算机辅助设计
  5. Win10+VSCode搭建opencv+C++环境(2)
  6. mysql排序自段为字符串类型问题解决
  7. 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极
  8. java字符串数字统计_对字符串进行简单的字符数字统计 探索java中的List功能
  9. 51NOD 1244 莫比乌斯函数之和
  10. 45:十进制到八进制
  11. Android全局代理软件ProxyDroid和TransProxy源码分享
  12. 2020软件测试面试题汇总,看完BATJ面试官对你微微一笑!(内含答案)
  13. 怎么用PS为一寸证件照更换底色背景色
  14. 华为服务器进入bios怎么重装系统,华为服务器进bios设置
  15. tf-encrypted介绍和代码示例
  16. 强迫症终结版 - 蹩脚梨视频下载器(很菜勿喷)
  17. Quartz数据库表分析
  18. mathcad 15.0安装教程
  19. Cas5.3.14手机号码登录(五)
  20. 存储格式在Hive的应用

热门文章

  1. Presto(二)开启安全认证
  2. C语言的 = 和 ==、!=
  3. 高级数据结构之R树(R-tree)
  4. h3c服务器增加硬盘,H3C服务器硬盘配置Raid
  5. 数据中心的端口密度该如何增加?
  6. Python如何删除多余的空格与空行(有代码)
  7. 0x01 - 前期信息收集
  8. 数据库必知词汇:即席查询(Ad Hoc)
  9. git上如何删除仓库
  10. 简单工厂/工厂方法/抽象工厂