def logged(fun):
    def _inner(*args, **kwargs):
        print 'Function %s entry' % fun.__name__
        fun(*args, **kwargs)
        print 'Function %s exit' % fun.__name__

    return _inner

@logged
def foo():
    print 'Doing something'

foo()

