Parametrisierter Dekorator

def decofactory(decorator_param):
    def decoratorfunction(func):
        def wrapper(*args, **kwargs):
            func(*args, **kwargs)
        return wrapper
    return decoratorfunction
            

@decoratorfactory(someparameter)
def actual_function(param1, param2):
    pass

Default values in Parametern von Dekoratoren

def decofactory(decorator_param=1):
    def decoratorfunction(func):
        def wrapper(*args, **kwargs):
            func(*args, **kwargs)
        return wrapper
    return decoratorfunction
            

@decoratorfactory
def actual_function(param1, param2):
    pass

Lösung 1

Statt:

@decoratorfactory
def actual_function(param1, param2):
    pass

@decoratorfactory()
def actual_function(param1, param2):
    pass

Lösung 2

def decofactory(decorator_param=1):
    def decoratorfunction(func):
        def wrapper(*args, **kwargs):
            func(*args, **kwargs)
        return wrapper
    if callable(decorator_param):
        # Set the default-value 
        decorator_param = 1
        return decoratorfunction(decorator_param)
    return decoratorfunction