Форум сайта python.su
Имеется словарь, необходимо сгенерировать на его основе некоторую lambda-функцию, например вида:
{'a.x': 3, 'b.x': 4, 'b.y': 5, }
lambda a, b: (a.x, b.x, b.y)
Офлайн
AST -> compile -> code object -> function object
Офлайн
Да. Но в types.CodeType получаю
lambda a, b: (a.x, a.x, a.y)
Офлайн
вот сам код и результат:
co = CodeType(1, 1, 2, 67, ''.join(map(chr, co)),
(None, 3, 4, 5), ('', 'x', 'x', 'y'), ('a', 'b'), '', '<lambda>', 1, '')
есть так: "lambda a, b: (a.x == 3) and ((a.x == 4) and (a.y == 5))"
надо так: "lambda a, b: (a.x == 3) and ((b.x == 4) and (b.y == 5))"
Офлайн
Нашел.
За соединение аргументов отвечает второй байт (переменная idx) в каждой группе “co”:
co += [124, idx, 0,
105, i, 0,
100, i, 0,
106, 2, 0,
Офлайн