为什么在函数中嵌套执行exec时会出错?

1 投票
1 回答
3158 浏览
提问于 2025-04-16 20:31

我正在为我的游戏制作一个“编译器”,目的是让玩家可以做一些有趣的事情,但又不让他们注入代码。这个编译器主要处理声明式的“代码”,看起来像这样:{"player_location":"IceHall.A7", "print", "You are teleported somewhere", "tiles":{"FirePlace.B3":{'Type':"Corner", "Actions+":{....}}}}。这里的动作是如何表示的;当玩家执行这个动作时,就会调用它。

总之,这些内容需要被编译成一个函数。当我在交互式解释器中尝试类似的东西时(具体来说是:

def compile(code):
    def act():
       exec code
    return act

),这段代码(基本上就是最终版本的样子,只是“代码”是我构建的)出现了一个奇怪的错误:

文件 "", 第 3 行 语法错误:
在函数 'act' 中不允许使用未限定的 exec,因为它是一个嵌套函数。

我该如何解决这个问题呢?

1 个回答

0

这个回答就像在这个问题中提到的,主要是因为缺少上下文。我想在本地变量和全局变量中执行代码。

撰写回答