-
python3教程之Python中eval与exec的使用及区别
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/python.html
试听地址 https://www.xin3721.com/eschool/python.html
最近开发中用到了eval()与exec()这两个函数,不知道在哪种场景下用哪个函数,所以就翻了下Python的文档。这里就来简单说一下这两个函数的区别
1. eval函数
函数的作用:
计算指定表达式的值。也就是说它要执行的Python代码只能是单个运算表达式(注意eval不支持任意形式的赋值操作),而不能是复杂的代码逻辑,这一点和lambda表达式比较相似。
函数定义:
1
|
eval (expression, globals=None, locals=None) |
参数说明:
expression:必选参数,可以是字符串,也可以是一个任意的code对象实例(可以通过compile函数创建)。如果它是一个字符串,它会被当作一个(使用globals和locals参数作为全局和本地命名空间的)Python表达式进行分析和解释。
globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。
如果globals与locals都被忽略,那么它们将取eval()函数被调用环境下的全局命名空间和局部命名空间。
返回值:
如果expression是一个code对象,且创建该code对象时,compile函数的mode参数是'exec',那么eval()函数的返回值是None;
否则,如果expression是一个输出语句,如print(),则eval()返回结果为None;
否则,expression表达式的结果就是eval()函数的返回值;
实例:
1
2
3
4
5
6
7
8
9
10
11
12
|
x = 10 def func(): y = 20 a = eval ( 'x + y' ) print ( 'a: ' , a) b = eval ( 'x + y' , { 'x' : 1 , 'y' : 2 }) print ( 'b: ' , b) c = eval ( 'x + y' , { 'x' : 1 , 'y' : 2 }, { 'y' : 3 , 'z' : 4 }) print ( 'c: ' , c) d = eval ( 'print(x, y)' ) print ( 'd: ' , d) func() |
输出结果:
1
2
3
4
5
|
a: 30 b: 3 c: 4 10 20 d: None |
栏目列表
最新更新
python数据库连接池技术总结
python数据库连接池技术总结
成人网站性能提升 20 倍之经验谈 [Python
python动态捕获异常
python 探测网站目录的GUI程序
python实现中文字符繁体和简体中文转换
Python服务器开发 -- 网络基础
python高性能编程方法一
使用python管理Cisco设备
python抓取google搜索结果
基于UDP的服务器端和客户端
再谈UDP和TCP
在socket编程中使用域名
网络数据传输时的大小端问题
socket编程实现文件传输功能
如何优雅地断开TCP连接?
图解TCP四次握手断开连接
详细分析TCP数据的传输过程
图解TCP数据报结构以及三次握手(非常详
TCP协议的粘包问题(数据的无边界性)
Excel数据导入到Sql server
SQL Server like 字段
SQL Server中的LEFT、RIGHT函数
sql server 安装出现需要sqlncli.msi文件,错误
SQL Server学习内容(一)
SQLServer执行大脚本文件时,提示“无法执
数据库敏捷版本控制之3个数据库策略
将select 转为json
SQL Server 创建索引(index)
GROUP BY中的WITH CUBE、WITH ROLLUP原理测试及