Python – How Interceptor in python is applied

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:

Related Problems and Solutions