51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Python - eval 和 exec 函数

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.zywvvd.com/notes/coding/python/python-eval/python-eval/

赞(0)
未经允许不得转载:工具盒子 » Python - eval 和 exec 函数