以下的文章是通过Python Library: Exec & Compile的相关实际操作代码的介绍来介绍Python Library在实际操作的相关步骤,以下是文章内容的具体介绍,希望你在浏览完下面的文章会有所收获。
直接运行代码字符串也是动态语言的一个重要特征。虽然在 .NET/C# 里也可通过 CodeDom 实现类似的功能,但远没 Python 这么方便自由。
- >>> code = """
- def test(s):
- print "test:", s
- a = 123
- """
- >>> exec code
- >>> a
- 123
- >>> test("abc")
- test: abc
内置函数里还有 eval() 和 execfile() 都是用来做类似事情的。exec 关键字执行多行代码片段,eval() 函数通常用来执行一条包含返回值的表达式,而 execfile 自然是用来执行源码文件了。
- >>> a = 10
- >>> x = eval("a + 3")
- >>> x
- 13
eval() 和 execfile() 都有 "globals, locals" 参数,用于传递环境变量,默认或显式设置为 None 时都直接使用 globals() 和 locals() 获取当前作用域的数据。
- >>> x = eval("a + b", {}, {})
传递空值,使其无法获取本地信息
- Traceback (most recent call last):
- File "<pyshell#21>", line 1, in <module>
- x = eval("a + b", {}, {})
- File "<string>", line 1, in <module>
- NameError: name 'a' is not defined
- >>> x = eval("a + b", {}, { "a":123, "b":2})
显式传递环境信息
- >>> x
- 125
以上文章的内容是对Python Library的实际相关应用操作过程中操作的部分介绍。
【编辑推荐】