python中eval和exec有什么不一样

  介绍

小编给大家分享一下python中eval和exec有什么不一样,相信大部分人都还不怎么了解,因此分享这篇文章给大家学习,希望大家阅读完这篇文章后大所收获、下面让我们一起去学习方法吧!

<强>函数的作用:

计算指定表达式的值,也就是说它要执行python的代码只能是单个运算表达式(注意eval不支持任意形式的赋值操作),而不能是复杂的代码逻辑,这一点和λ表达式比较相似。

<强>函数定义:

eval(表情,,全局变量=没有,当地人=None)

<强>参数说明:

表达式:必选参数,可以是字符串,也可以是一个任意的代码对象实例(可以通过编译函数创建)。如果它是一个字符串,它会被当作一个(使用全局变量和当地人参数作为全局和本地命名空间的)python表达式进行分析和解释。

全局:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。

当地人:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与全局相同的值。

如果全局与当地人都被忽略,那么它们将取eval()函数被调用环境下的全局命名空间和局部命名空间。

<强>返回值:

如果表达式是一个代码对象,且创建该代码对象时,编译函数的方式参数是& # 39;exec # 39;,那么eval()函数的返回值是没有的;

否则,如果表达式是一个输出语句,如打印(),则eval()返回结果为没有;

否,则表达式表达式的结果就是eval()函数的返回值;

<强>函数的作用:

动态执行python代码。也就是说exec可以执行复杂的python代码,而不像eval函数那么样只能计算一个表达式的值。

<强>函数定义:

exec(对象[,全局[,当地人]])

<强>参数说明:

对象:必选参数,表示需要被指定的python代码。它必须是字符串或代码对象。如果对象是一个字符串,该字符串会先被解析为一组python语句,然后在执行(除非发生语法错误)。如果对象是一个代码对象,那么它只是被简单的执行。

全局:可选参数,同eval函数

当地人:可选参数,同eval函数

<强>返回值:

执行函数的返回值永远为没有。

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

eval()函数只能计算单个表达式的值,而exec()函数可以动态运行代码段。

eval()函数可以有返回值,而exec()函数返回值永远为None。

<强> eval:

可以把字符串里的字符转换为可执行代码,但只支持一行字符。可以返回执行后得到的值。如下:

f =,“3 + 6 + 9 + 8“;   时间=s  eval (f)   打印(s)

输出:

“C: \ Program 文件\ python3 \ python3.exe", D:/codes_py3 luhy_tool/string_utils/mymethod.py   26日

<强>执行:

可以把字符串里的字符转换为可执行代码,可以支持多行字符。但是拿不到返回结果。如下:

code =, & # 39; & # 39; & # 39;   def  func ():   ,,,print(& # 39;测试# 39;)   ,,return  555   函数()   & # 39;& # 39;& # 39;   ,   f =, exec(代码)   打印(& # 39;——& # 39;* 5)   打印(f)

,输出:

“C: \ Program 文件\ python3 \ python3.exe", D:/codes_py3 luhy_tool/string_utils/mymethod.py   测试   ---------------   没有

以上是python中eval和exec有什么不一样的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

python中eval和exec有什么不一样