How Interceptor in python is applied… here is a solution to the problem.
How Interceptor in python is applied
I need to know when a function is called and do something after calling the function. It seems that Interceptor can do it.
How do I use interceptors in python?
Solution
This can be done using a decorator:
from functools import wraps
def iterceptor(func):
print('this is executed at function definition time (def my_func)')
@wraps(func)
def wrapper(*args, **kwargs):
print('this is executed before function call')
result = func(*args, **kwargs)
print('this is executed after function call')
return result
return wrapper
@iterceptor
def my_func(n):
print('this is my_func')
print('n =', n)
my_func(4)
Output:
this is executed at function definition time (def my_func)
this is executed before function call
this is my_func
n = 4
this is executed after function call
@iterceptor
Replace my_func with the execution result of the iterceptor
function, the wrapper
function. Wrapper
wraps a given function in some code, usually keeping the parameters of wrappee and the execution result, but adding some extra behavior.
@wraps (func)
is used to copy the signature/docstring data of the function func
into the newly created wrapper
function.
More information: