アドベントカレンダー「ほぼ横浜の民」の3日目の記事です。 今年は Python のデコレータについて書いています。かなり雑に説明すると、デコレータとは関数についている @staticmethod や @classmethod のことです。OSS を見ているとカスタムのデコレータもあって、これってどのように機能しているんだろう?と気になることが多くなってきたので少し勉強してみました。 この記事を読んでわかること そもそもデコレータって何? デコレータってどうやって定義するの? 引数付きのデコレータはどうやって定義する? 引数付きのデコレータはなぜネストしている? なぜ functools.wraps を使ってデコレータを定義する必要があるの? 機械学習関連の OSS ではどのように使われている? デコレータとは? デコレータは、関数をラップすることで別の関数を返却する関数です。実際にはクラス