Можно ли заменить действительный код функции на функцию, которая его оборачивает? Здесь я пытаюсь заменить операторы print
на операторы log
:
import logging
import re
def print_to_log(func):
def wrapper_print_to_log(*args, **kwargs):
# how to do something like this?
re.sub(r'print\s*\(', 'logging.info(', **function_code**)
return func(*args, **wargs)
return wrapper_print_to_log
@print_to_log
def greet(name='bob'):
print ("Hello, %s" % name)
print ("How are you sir?")
Можно ли заменить код или сделать что-то похожее на приведенное выше?