Pybites Logo

Create a sandwich decorator

Level: Beginner (score: 2)

After creating our Decorators and Context Managers learning path we realized we did not have a beginner decorator Bite, so here it is!

Complete the sandwich decorator which takes a function and prints === Upper bread slice === (defined in UPPER_SLICE) and === Lower bread slice === (defined in LOWER_SLICE) before and after calling the passed in function (func).

And voilà applying this decorator to add_ingredients you have your sandwich (see also the tests):

>>> from sandwich import sandwich
>>> @sandwich
... def add_ingredients(ingredients):
...     print(' / '.join(ingredients))
...
>>> ingredients = ['bacon', 'lettuce', 'tomato']
>>> add_ingredients(ingredients)
=== Upper bread slice ===
bacon / lettuce / tomato
=== Lower bread slice ===

This is probably the easiest way to demo a decorator. Even so decorators can be confusing when you start using them so here is an article we wrote some time ago: Learning Python Decorators by Example.