python eval函数_Python中eval与exec区别 | 萧小寒

摘要

学过JavaScript的人都知道,在JS中有一个函数叫内置函数叫eval。eval函数可计算某个字符串,并执行其中的的JavaScript代码。正是因为这个特性,所以现在很多教材都不推荐使用这个函数。

学过JavaScript的人都知道,在JS中有一个函数叫内置函数叫eval。eval函数可计算某个字符串,并执行其中的的JavaScript代码。正是因为这个特性,所以现在很多教材都不推荐使用这个函数。

无独有偶,在

eval(expression[, globals[, locals]])

参数说明:

expression:必选参数,可以是字符串,也可以是一个任意的code对象实例。如果是字符串,它会被当作一个Python表达式进行分析和解释。

globals:可选参数,类型必须是dictionary,表示全局命名空间(存放全局变量)。

locals:可选参数,可以是任意map对象,表示当前局部命名空间(存放局部变量)。如果该参数被忽略,那么它将会取与globals相同的值。

注:如果globals与locals都没填,那么它们将取eval函数被调用环境下的全局命名空间和局部命名空间。对于不同的code代码,eval函数的返回值可能是不同的。

Python中还有一个类似eval的函数——exec函数,同样是内置函数,不过JS中并没有一个全局的exec函数。

exec(object[, globals[, locals]])

参数说明:

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

globals:可选参数,类型必须是dictionary,表示全局命名空间(存放全局变量)。

locals:可选参数,可以是任意map对象,表示当前局部命名空间(存放局部变量)。如果该参数被忽略,那么它将会取与globals相同的值。

注:exec函数的返回值永远为None。

eval和exec的区别:

1、eval函数只能用于计算单个表达式的值,而exec函数可以执行代码段;

2、eval函数可以有返回值,并且根据传入内容的不同返回值可能不同,而exec函数返回值永远为None。

由于eval函数和exec函数可以执行代码,存在一定的安全隐患。如无必要,不建议使用。

你可能感兴趣的:(python,eval函数)