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
работает и это мой единственный вариант, я сделаю это.
Спасибо!