Chociaż lubię myśleć o sobie jako o dość kompetentnym kodzie Pythona, jednym z aspektów języka, którego nigdy nie byłem w stanie zrozumieć, są dekoratorzy.
Wiem, czym one są (powierzchownie), przeczytałem samouczki, przykłady, pytania na temat przepełnienia stosu i rozumiem składnię, mogę pisać własne, czasami używam @classmethod i @staticmethod, ale nigdy nie przychodzi mi do głowy, aby użyć dekorator, aby rozwiązać problem we własnym kodzie Python. Nigdy nie spotykam problemu, w którym myślę: „Hmm… to wygląda jak praca dla dekoratora!”
Zastanawiam się, czy moglibyście podać przykłady zastosowania dekoratorów we własnych programach i mam nadzieję, że będę miał „A-ha!” chwila i zdobądź je.
functools.lru_cache
który robi dokładnie to, co powiedział Peter, od Python 3.2, wydany w lutym 2011 roku.