Dekorator to funkcja, która opakowuje inną funkcję, aby dodać zachowanie bez modyfikacji oryginalnego kodu. Jest stosowany za pomocą składni @decorator nad funkcją — czysty sposób na dodanie zagadnień krzyżowych (ang. cross-cutting concerns) takich jak logowanie, timing, cachowanie lub kontrola dostępu.
Jak działają dekoratory
():
():
()
result = func(*args, **kwargs)
()
result
wrapper
():
()
greet()
