FunctionWrapper is a design pattern used when dealing with relatively complicated functions. The wrapper function typically performs some prologue and epilogue tasks like
- allocating and disposing resources
- checking pre- and post-conditions
- caching / recycling a result of a slow computation
but otherwise it should be fully compatible with the wrapped function, so it can be used instead of it. (This is related to the DecoratorPattern.)
As of Python 2.1 and the introduction of nested scopes, wrapping a function is easy:
The additional decorate function is needed to work with decorator syntax introduced in Python 2.4.
Now, let's wrap something up:
