Python3 - как добавить атрибуты в модуль перед его выполнением?

Применение: представьте себе финансовых аналитиков, которые быстро пишут фрагменты кода Python и могут использовать удобные финансовые функции и общие переменные без необходимости выполнять какие-либо операции импорта, определения функций или выполнения каких-либо действий. Просто плоский исходный файл кода, который они хотят написать, и ничего больше.

Я могу почти достичь этого, динамически загружая исходный файл как модуль (легко), и добавляя мои функции + переменные как атрибуты в загруженный модуль (еще проще). Проблема в том, что загрузка модуля приводит к его выполнению, что слишком рано. Неопределенные функции и т. Д.

Python 3.x и PEP 402 представляют спецификации модулей, а create_module а также exec_module функции. Создайте модуль, добавьте атрибуты, а затем выполните. Отлично. Кроме create_module разрешено возвращать None, И просматривают 3,5 importlib.abc, .util, а также .machinery код, все реализации create_module вернуть None,

Поэтому мне интересно, должен ли я вместо этого написать свой собственный загрузчик, и / или импортер, и / или что-то еще. Кстати, я предпочитаю добавлять в модуль, а не добавлять в builtins, но если builtins работает и это мой единственный вариант, я сделаю это.

Спасибо!

0 ответов

Другие вопросы по тегам