Если вы измените этот синтаксис чуть больше, чтобы использовать () 'a и' правильно, вам не нужен "DSL".
У тебя обычный старый Python. Жизнь хороша.
from my_standard_package import *
(MY_DSL_FOO_FUNCTION, params, (ANOTHER_DSL_FUNCTION, ), expression_in_python, more_expressions_in_python)
Все, что вам нужно сделать, это добавить, s. Поскольку у вас, кажется, есть две вещи - функции и выражения, возможно, вы имеете в виду это.
( MY_DSL_FOO_FUNCTION(params), ANOTHER_DSL_FUNCTION(), expression_in_python, more_expressions_in_python )
Это было бы, возможно, более Pythonic.
Но, возможно, вашей целью является какое-то позднее связывание, когда кортеж оценивается позже в каком-то другом контексте или что-то в этом роде.
from functools import partial
( partial(MY_DSL_FOO_FUNCTION, params), ANOTHER_DSL_FUNCTION, lambda: expression_in_python, lambda: more_expressions_in_python )
Таким образом, функции с параметрами используются для создания других функций, которые могут быть оценены позже. Да. Это включает в себя больше синтаксиса. Тем не мение. Это также позволяет избежать создания еще одного языка.