Добавить вызов функции в другую функцию в PythonPython

Программы на Python
Anonymous
Добавить вызов функции в другую функцию в Python

Сообщение Anonymous »

У меня есть функция foo и процесс-декоратор:

Код: Выделить всё

@process
def foo(x, y):
print x + y
Декоратор создает объект Process, которому передается функция foo и ее параметры:

Код: Выделить всё

def process(func=None, **options):
if func != None:
def _call(*args, **kwargs):
if len(options) > 0 and 'fail' in options:
return Process(func, fail=options['fail'], *args, **kwargs)
else:
return Process(func, fail=None, *args, **kwargs)
return _call
else:
def _func(func):
return process(func, **options)
return _func
Я хочу изменить функцию foo, передаваемую декоратору процесса во время выполнения, чтобы включить вызов другой функции, например функция get_locals(), которая, возможно, перезаписывает локальные переменные, в самом начале foo:

Код: Выделить всё

def foo(x, y):
get_locals()
print x + y
Я пытался что-то сделать с помощью проверки, получая исходный код функции, а затем компилируя его в объект кода, однако это приводило к исключению «объект кода не может быть вызван» или чему-то подобному.
Возможно ли это вообще? Есть ли более простое/лучшее решение?

Вернуться в «Python»