VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python3 >
  • python3教程之Python中eval与exec的使用及区别

本站最新发布   Python从入门到精通|Python基础教程
试听地址  
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
= 10
def func():
  = 20
  = eval('x + y')
  print('a: ', a)
  = eval('x + y', {'x'1'y'2})
  print('b: ', b)
  = eval('x + y', {'x'1'y'2}, {'y'3'z'4})
  print('c: ', c)
  = eval('print(x, y)')
  print('d: ', d)
func()

 

输出结果:

1
2
3
4
5
a:  30
b:  3
c:  4
10 20
d:  None
相关教程