为什么在函数中嵌套执行exec时会出错?
我正在为我的游戏制作一个“编译器”,目的是让玩家可以做一些有趣的事情,但又不让他们注入代码。这个编译器主要处理声明式的“代码”,看起来像这样:{"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,因为它是一个嵌套函数。
我该如何解决这个问题呢?