¿Cómo crear un decorador de Python que se pueda usar con o sin parámetros?

Me gustaría crear un decorador de Python que se pueda usar con parámetros:

@redirect_output("somewhere.log")
def foo():
    ....

o sin ellos (por ejemplo, para redirigir la salida a stderr de forma predeterminada):

@redirect_output
def foo():
    ....

¿Es eso posible?

enga en cuenta que no estoy buscando una solución diferente al problema de redirigir la salida, es solo un ejemplo de la sintaxis que me gustaría lograr.

Respuestas a la pregunta(10)

Su respuesta a la pregunta