将Python全局变量和局部变量传递给Lua

我正在尝试为Lua源字符串编写Python 3的eval()函数包装器。

为了在Python中执行Lua表达式,我使用Lupa库中的eval()。但是Lupa中的eval()的参数与Python内置的eval()不同:

  • Lupa eval: eval(source: str),
  • Python eval: eval(source: str, globals: dict, locals: dict)

当然,如果globalslocals都是None,我可以直接编写自己的函数。在自己编写的eval()内调用Lupa的eval()就足够了:

import lupa

lua_run = lupa.LuaRuntime(unpack_returned_tuples=True)

def eval(expression, globals=None, locals=None):
    return lua_run.eval(expression)

但是如果我想传递非空的globalslocals字典怎么办呢?

也许,在Lupa中这是不可能的,我必须使用其他库吗?

点赞