小编给大家分享一下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有什么不一样的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!