Я создаю функцию во время выполнения с помощью byteplay.py. Когда я закончу с построением байткоды, я беру код объекта и создать новую функцию:Сделать функцию «внутри» модуля
module = new.module("foomodule")
fn = new.function(c.to_code(), {}, name.name)
setattr(module, "fn", fn)
Теперь это, казалось бы работать, я могу назвать module.foo(), и он работает, как ожидалось , Однако, если fn пытается вызвать глобальную функцию, вызов завершается с ошибкой, так как мой список глобальных переменных, переданных в new.function, пуст {}.
Проблема в том, что я хочу, чтобы список глобальных переменных всегда ссылался на модуль. Итак, как мне это сделать? Как передать модуль в new.function?
работал как шарм! Думал об этом, и я думал, что попробовал, но я просто попробовал еще раз, и он отлично работает! –