Можно ли использовать разные декораторы в зависимости от аргументов функции в python?

Например, если функция получает на вход *args, использовать один декоратор, а в случае передачи именованных параметров а=1, с=2 - другой Вот я тут использую один декоратор в обоих случаях, но теоретически можно ли определить какой декоратор исползовать?

def fdecorator2(func):
  
  def inner(*args, **kwargs):
    tup = args
    dic = kwargs
    res = func(*args, **kwargs)
    if tup == ():
      print('num_wrapper_positional is used: ',dic)
    else:
      print('num_wrapper_named is used: ',tup)
    return int(res)
  
  return inner

@fdecorator2
def test(a1=0, a2=0):
    return a1 + a2

Ответы (1 шт):

Автор решения: vp_arth

Что-то вроде этого?

if tup == ():
  res = num_wrapper_positional(func)(*args, **kwargs);
else:
  res = num_wrapper_named(func)(*args, **kwargs);
→ Ссылка