![Fichier:Python logo and wordmark.svg — Wikipédia](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Python_logo_and_wordmark.svg/1200px-Python_logo_and_wordmark.svg.png)
Le décorateur est une fonction permettant de modifier le comportement d'autres fonctions, évitant la répétition de code. Il est appelé par “ @nom\_décoraeur ”.
```python
def title_decorator(function):
def wrapper(*args, **kwargs):
print("*"*30)
print("-"*30)
function(*args, **kwargs)
print("-"*30)
print("*"*30)
return wrapper
@title_decorator
def title(titre):
print(titre)
>>> titre = "Ceci est mon texte décoré"
>>> title(titre)
******************************
------------------------------
Ceci est mon texte décoré
------------------------------
******************************
```
Ce décorateur permet simplement de mettre en forme un titre. Mais le décorateur, critiqué pour son nom ne définissant pas assez clairement sa fonction, peut avoir bien d'autres usages.
Par exemple, dans le cadre du _développement web_, les décorateurs sont très utilisés. Typiquement, pour les pages nécessitant une authentification, le décorateur “ @login\_required ” du framework Django est très utile.
```python
from django.contrib.auth.decorators import login_required
@login_required
def my_page(request):
...
```
Tout comme “ @login\_required ”, beaucoup de décorateurs sont déjà développés, nécessitant un simple import.