安装环境:
apt-get install liblua5.4-dev
pip3 install lupaPython访问Lua虚拟机
获取虚拟机:
import lupa.lua54 as lupa
from lupa import LuaRuntime
lua = LuaRuntime(unpack_returned_tuples=True)访问Lua全局表:lua.globals()["print"] = print
执行Lua代码1: lua.execute('print("hello")')
执行Lua代码2: ret = lua.eval("_VERSION") , ret 是一个Lua变量封装变量
判定Lua变量类型: lupa.lua_type
封装变量给Lua访问:
ret = lupa.as_itemgetter(py_dict) #Lua索引`ret`时优先取数据
ret = lupa.as_attrgetter(py_dict) #Lua索引`ret`时优先取属性方法Lua访问Python
| Lua脚本内置Python变量 | ||
|---|---|---|
python.builtins | userdata | python内置类型,包含print/len/type/isinstance/list/dict等等 |
python.args | function | todo |
python.as_function | function | todo |
python.eval | userdata | 用于执行python字符串代码 |
python.set_overflow_handler | function | todo |
python.none | userdata | 类似lua中的nil, 遍历pyobj时可以直接相等判定 |
python.enumerate | function | 类似ipairs,遍历pyobj, 返回index和value。 但是index从0开始,如果是Dict则value其实是key |
python.iter | function | 遍历pyobj, 一次只返回一个值,list类型的元素值或者dict类型的key值 |
python.as_itemgetter | function | 设置pyobj数据在Lua索引时访问优先 |
python.as_attrgetter | function | 设置pyobj数据在Lua索引时属性方法优先索引 |
python.iterex | function | 类似pairs, 遍历pyobj, 返回key和value |
评论