为什么嵌套在函数中的exec会出错?

2024-10-01 13:36:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图为我的游戏做一个“编译器”(这样人们就可以做有趣的事情,但不能注入代码),主要是去极化的“代码”(它看起来像这样:{"player_location":"IceHall.A7", "print", "You are teleported somewhere", "tiles":{"FirePlace.B3":{'Type':"Corner", "Actions+":{....}}}})。这就是一个动作的表现方式;当玩家做动作时,它被调用。 无论如何,它必须被编译成一个函数。当我在交互式解释器中尝试类似的东西时(特别是:

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

)。这(或多或少会是最终结果,除了我正在构建的“代码”)引发了一个奇怪的错误:

File "", line 3 SyntaxError:
unqualified exec is not allowed in function 'act' it is a nested function.

我该怎么办?在


Tags: 代码游戏编译器isdefcodefunctionlocation