exec()和eval()
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()相关推荐
- python exec函数和eval函数_Python exec()和eval()的使用注意事项
使用 exec() 和 eval() 函数时,一定要记住,它们的第一个参数是字符串,而字符串的内容一定要是可执行的代码. 以 eval() 函数为例,用代码演示常犯的错误: s="hello ...
- eval python定义变量,表达式与语句 局部变量与全局变量 exec与eval
表达式与语句 局部变量与全局变量 exec与eval Python有时需要动态的创造Python代码,然后将其作为语句执行 或 作为表达式计算. exec用于执行存储在字符串中的Python代码. ...
- Python 的 eval() 与 exec()区别
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个. 大部分函数是我们经常使用的,例如 print().open ...
- 深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个. 大部分函数是我们经常使用的,例如 print().open ...
- python内置函数 exec eval compile
1.exec eval compile ·exec & eval exec和eval都可以执行储存在字符串或文件中的 Python 语句. 用法:exec(object[, global ...
- python实现规则引擎_python – 如何在不使用eval()或exec()的情况下创建规则引擎?...
我的数据库中有一个简单的规则/条件表,用于为我们的某个系统生成警报.我想创建规则引擎或特定于域的语言. 存储在此表中的简单规则是..(省略此处的关系) if temp > 40 send ema ...
- 内置函数 匿名函数 eval exec execute compile sorted map filter等常见函数 repr chr ord...
内置函数 什么是内置函数? 就是python给你提供的. 拿来直接用的函数, 比如print., input等等. 截⽌止 到python版本3.6.2 python⼀共提供了了68个内置函数. 他们 ...
- 人生苦短我用python梗_人生苦短我用python: eval,e
01.函数原型 eval(expression[, globals[, locals]]) python提供内置函数 eval 可以执行或者解释一串python表达式,这里的表达式仅限于一些运算操作, ...
- python exec_Python exec()
python exec Python exec() function provides support for dynamic code execution. Python exec()函数提供了对动 ...
最新文章
- Use PowerShell to Replace netdom Commands to Join the Domain
- PHP跳转到另一个画面,并且带着该行内的一个数值作为参数传递给下一个页面.能给例子吗...
- Spring Boot Spring MVC 异常处理的N种方法 1
- 计算机辅助设计受力分析,假肢接受腔的受力分析和计算机辅助设计
- Win10+VSCode搭建opencv+C++环境(2)
- mysql排序自段为字符串类型问题解决
- 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极
- java字符串数字统计_对字符串进行简单的字符数字统计 探索java中的List功能
- 51NOD 1244 莫比乌斯函数之和
- 45:十进制到八进制
- Android全局代理软件ProxyDroid和TransProxy源码分享
- 2020软件测试面试题汇总,看完BATJ面试官对你微微一笑!(内含答案)
- 怎么用PS为一寸证件照更换底色背景色
- 华为服务器进入bios怎么重装系统,华为服务器进bios设置
- tf-encrypted介绍和代码示例
- 强迫症终结版 - 蹩脚梨视频下载器(很菜勿喷)
- Quartz数据库表分析
- mathcad 15.0安装教程
- Cas5.3.14手机号码登录(五)
- 存储格式在Hive的应用