Exec in Python 2.7.6

时间:2015-01-10 02:09:18

标签: python exec

我正在学习2.7.6上 eval exec 编译的基础知识。

我在 exec 上遇到了障碍,因为我在运行时遇到错误:

exec 'print 5'

错误:

  

SyntaxError:函数'main'中不允许使用unqualified exec   包含一个带有自由变量的嵌套函数(EvalExecCompile.py,   第61行

我发现 exec 是2.7.6中的表达式,而3.x中的函数。问题是,我找不到一个可以在2.7.6中学习 exec 的实例。

我知道使用 exec 等所有的危险,但只是想学习如何使用它们包装我曾经需要它们。

有人可以帮忙吗?也许提供一个我可以剖析的工作实例?

谢谢。

我的问题的目标是学习如何正确使用2.7.6中的 exec

1 个答案:

答案 0 :(得分:2)

除非指定上下文,否则不能在具有子功能的函数中使用exec。来自文档:

  

如果在函数中使用了exec,并且该函数包含嵌套块   使用自由变量,编译器将引发一个SyntaxError,除非   exec显式指定了exec的本地名称空间。 (其他   单词," exec obj"将是非法的,但是" exec obj在ns(命名空间)"将会   合法的。)

以下是实施exec的代码:

def test2():
    """Test with a subfunction."""
    exec 'print "hi from test2"' in globals(), locals()
    def subfunction():
        return True

test2()

此示例取自:In Python, why doesn't exec work in a function with a subfunction?