Добавлен Vlod,
опубликован
Раздел:
Общее
Интеграция Lua и Python
Сегодня мы познакомимся с интересным проектом под названием Lupa, который позволяет запускать Lua в среде Python и наоборот.
Зачем его использовать?
Lua - такой же динамичный язык, как Python, но LuaJIT компилирует его в очень быстрый машинный код, иногда быстрее, чем многие статически языки. Языковая среда выполнения очень мала и тщательно разработана для встраивания. Полный бинарный модуль Lupa, включая статически связанную среду выполнения LuaJIT2, весит всего около 700 КБ на 64-разрядной машине. Со стандартным Lua 5.1 он составляет менее 400 КБ.
Однако в экосистеме Lua отсутствуют многие элементы управления, которые Python легко включает либо в свою стандартную библиотеку, либо в виде сторонних пакетов. Это делает написание реальных приложений Lua более сложным, чем аналогичных приложений на Python. Поэтому Lua обычно не используется в качестве основного языка для больших приложений, но он обеспечивает быстрый, высокоуровневый и ресурсоемкий язык резервного копирования внутри Python, когда требуется скорость, а цикл редактирования-компиляции-запуска бинарных модулей слишком тяжелый и слишком статичный для гибкой разработки или горячего развертывания.
Установка
- Установить Python
- Ввести в командную строку pip install lupa
Быстрый старт
Более подробно на GitHub
from lupa import LuaRuntime
lua = LuaRuntime(unpack_returned_tuples=True)
l = lua.globals()
# Создать lua функцию
lua_add = lua.eval('function(a, b) return a+b end')
print(lua_add(5,6)) # 11
# Создать lua таблицу
lua_tbl = lua.eval('{a=1, b=2}')
for k, v in lua_tbl.items():
print(k, v) # b 2, a 1
# Выполнить код
lua_code = '''
myObj = {}
myObj.value = 5
myObj.set_value = function(val)
myObj.value = val
end
'''
lua.execute(lua_code)
myObj = l.myObj
print(myObj.value) # 5
myObj.set_value(7)
print(myObj.value) # 7
Результат
Lua код успешно соединился с библиотекой plotly для визуализации данных:
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
goodlyhero
2 года назад
1
Я рад, что автор придерживается классического стиля гайдов.
1
Берги
2 года назад
1
((Тут была шутка про Лупу)), надо что то делать с названием, практические применение всё ещё не ясно, скорее всего что-то для программистов, но наверное это очень круто всё 👍
1
ScorpioT1000
2 года назад
1
А если пайтон внутри луа внутри пайтона, будет pupa?
0
Vlod
2 года назад
0
Почему такое название есть на гите)
Bergi:
Написано же в начале статьи. Для тебя это значит, что теперь ты можешь использовать свои наработки внутри Python или вообще написать веб-сервер на Lua, покинув в Lua некоторые библиотеки из Python, на гите есть примеры. Как видишь, сама интеграция делается в пару строк и без танцев с бубном
1
Lord Sargeras
1 год назад
1
Очень интересно,спасибо автору за статью. Очень полезная для многих!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.