Как перехватить функцию в Python?

Аватар пользователя Ivan Mamtsev
Ivan Mamtsev
29 октября 2024

Для перехвата функции в Python можно использовать декораторы или методы перехвата вызовов функций.

Один из способов - использовать декоратор. Декораторы в Python - это функции, которые принимают другую функцию в качестве аргумента и возвращают функцию.

def decorator(func):
    def wrapper(*args, **kwargs):
        # Действия до вызова функции
        result = func(*args, **kwargs)
        # Действия после вызова функции
        return result
    return wrapper

@decorator
def my_func(arg):
    print(arg)

my_func(""Hello"")

Еще один способ - использовать модуль sys для перенаправления вызова функции на другую функцию.

import sys

def my_func(arg):
    print(arg)

def wrapper(*args, **kwargs):
    # Действия до вызова функции
    result = my_func(*args, **kwargs)
    # Действия после вызова функции
    return result

sys.modules[__name__].my_func = wrapper

my_func(""Hello"")
0 0