def get_spec_func(query): expression = filter_to_spec(json.loads(query)) def spec_func(attrs): attrs = dict(attrs) return eval(expression) return spec_func
query - это типа набор условий и в этих условиях нужны значения параметров attrs функции spec_func
Можна как то решить без eval?
Если передать в filter_to_spec параметр attrs и вызвать expression = filter_to_spec(attrs, json.loads(query)) в spec_func, то оно ж будет выполняться при каждом вызове spec_func.
Можна ли как-то типа сделать блок кода с expression и подменить ему локальную переменную attrs?