import sys
def logged(stream):
    def _inner(fun):
        def _wrapper(*args, **kwargs):
            stream.write('Function %s entry\n' %
                    fun.__name__)
            fun(*args, **kwargs)
            stream.write('Function %s exit\n' %
                    fun.__name__)
        return _wrapper
    return _inner

@logged(stream=sys.stderr)
def foo():
    print 'Doing something'
foo()

