Non ho perfettamente inteso il senso dell'esercizio, ma semanticamente equivalente al tuo è
Python:
def decora(f, *args, **kwargs):
@wraps(f)
def wrapper(*args, **kwargs):
x = list(args) + list(kwargs.values())
if any(not isinstance(i, str) for i in x): raise TypeError
return ' '.join(x + [str(f(*args, *kwargs))])
return wrapper