Я хочу иметь функцию в другом модуле, который при вызове имеет доступ ко всем переменным, к которым имеет доступ его вызывающий объект, и функционирует так же, как если бы его тело было вставлено в вызывающий объект, а не имел свой собственный контекст,в основном, как макрос C вместо обычной функции.Я знаю, что могу передать locals () в функцию, а затем она может обращаться к локальным переменным как к диктовке, но я хочу иметь возможность обращаться к ним нормально (например, xy, не x ["y"], и я хочу, чтобы все именавызывающий имеет доступ не только к местным жителям, но и к тем вещам, которые были «импортированы» в файл вызывающего, но не к модулю, который содержит функцию.
Возможно ли это осуществить?
Редактировать 2 Вот самый простой пример, который я могу придумать, из того, что я действительно пытаюсь сделать:
def getObj(expression)
ofs = expression.rfind(".")
obj = eval(expression[:ofs])
print "The part of the expression Left of the period is of type ", type(obj),
Проблема в том, что для «выражения» требуются импорт и локальные переменныевызывающего для того, чтобы вывести без ошибки. На самом деле есть гораздо больше, чем просто eval, поэтому я пытаюсь избежать решения просто передать localals () в и через eval (), так как это не исправитмоя общая проблема со случаем.