Python 支持通过 eval 函数执行字符串命令,本文记录相关内容。
eval {#eval}
- eval() 函数用来执行一个字符串表达式,并返回表达式的值。
语法 {#语法}
- 以下是 eval() 方法的语法:
参数 {#参数}
- expression -- 表达式。
- globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
- locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
示例 {#示例}
exec {#exec}
- exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。
语法 {#语法-2}
参数 {#参数-2}
- object:必选参数,表示需要被指定的 Python 代码。它必须是字符串或 code 对象。如果 object 是一个字符串,该字符串会先被解析为一组 Python 语句,然后再执行(除非发生语法错误)。如果 object 是一个 code 对象,那么它只是被简单的执行。
- globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
- locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与 globals 相同的值。
返回值 {#返回值}
exec 返回值永远为 None。
示例 {#示例-2}
区别示例 {#区别示例}
eval 仅执行表达式,复杂的语句无法执行,但可以使用 exec,以导入模块为例
-
导入模块时不可以使用
eval
函数如果我执行import vfs_tests as v,它就会起作用。但是,使用eval()的同一导入(如eval('import vfs_tests as v'))会引发语法错误。
-
eval只适用于表达式,import是一种语句,可以使用 exec 语句
exec('import vfs_tests as v')
参考资料 {#参考资料}
- https://www.runoob.com/python/python-func-eval.html
- https://www.runoob.com/python3/python3-func-exec.html
文章链接:
https://www.zywvvd.com/notes/coding/python/python-eval/python-eval/