Function decorator

Function decorator

def decorator_function(original_function):
    def wrapper_function(*arge, **kwargs):
        print('wrapper executed this before {}'.format(original_function.__name__))
        return original_function(*arge, **kwargs)
    return wrapper_function

@decorator_function
def display():
    print('display function ran')
@decorator_function
def display_info(name, age):
    print('display_info ran with arguments ({}, {})'.format(name,age))
display_info('John', 25)
display()

# display = decorator_function(display) equal to @decorator_function

Example: log file

def my_logger(orig_func):
    import logging
    logging.basicConfig(filename='{}.log'.format(orig_func.__name__), level=logging.INFO)

    def wrapper(*args, **kwargs):
        logging.info(
            'Ran with args:{}, and kwargs: {}'.format(args, kwargs))
        return orig_func(*args, **kwargs)
    return wrapper
    
@my_logger
def display_info(name, age):
    print('display_info ran with arguments ({}, {})'.format(name,age))
display_info('John', 25)

Example: timer

Class decorator

Last updated

Was this helpful?