●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

Pythonのデコレーター(Decorator)とは?関数に機能を追加する便利な仕組み

デコレーター(Decorator)とは、Pythonで既存の関数やメソッドに、簡潔に新しい機能を追加するための仕組みです。 @ を使って関数の定義に「飾り(装飾)」をつけるイメージから、デコレーターと呼ばれています。

デコレーターの基本構文

def decorator(func):
    def wrapper():
        print("前処理")
        func()
        print("後処理")
    return wrapper

@decorator
def hello():
    print("こんにちは!")

hello()

この例では、hello() を呼び出すと、decorator によって前後に処理が追加された関数として動作します。

実行結果

前処理
こんにちは!
後処理

引数付き関数への対応

def decorator(func):
    def wrapper(*args, **kwargs):
        print("開始")
        result = func(*args, **kwargs)
        print("終了")
        return result
    return wrapper

@decorator
def add(a, b):
    return a + b

print(add(3, 5))  # → 開始 → 終了 → 8

*args**kwargs を使えば、任意の引数を持つ関数も装飾可能です。

デコレーターの活用例

  • ログ出力(関数が呼ばれた記録)
  • 実行時間の測定
  • 認証やアクセス制限の制御
  • 関数の共通処理の簡略化

標準ライブラリのデコレーター例

from functools import lru_cache

@lru_cache(maxsize=1000)
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

この @lru_cache は、関数の結果をキャッシュして高速化してくれるデコレーターです。

クラスメソッドや静的メソッドにも

class MyClass:
    @staticmethod
    def greet():
        print("こんにちは(静的メソッド)")

    @classmethod
    def info(cls):
        print("これはクラスメソッドです")

@staticmethod@classmethod も実はPythonの組み込みデコレーターです。

まとめ

Pythonのデコレーターは、関数やメソッドに簡単に機能を追加できる強力な機能です。 コードの再利用性が高まり、保守性の高いプログラムを作るのに役立ちます。

まずはログ表示や前後処理など、簡単な例から試してみましょう。理解が深まると、Web開発やAPI制御など応用範囲も広がります!

 

Python関連用語集

−−−−−  Python  −−−−−

Pythonのインデント(Indentation)とは?構文エラーを防ぐための基本ルール

Pythonの変数(Variable)とは?使い方・ルール・注意点をやさしく解説!

Pythonのデータ型(Data Type)とは?基本型と使い方をやさしく解説

Pythonの関数(Function)とは?定義・使い方・引数の基本をやさしく解説

Pythonのリスト(List)とは?配列的な使い方と便利な操作を解説!

Pythonの辞書(Dictionary)とは?キーと値でデータを管理する便利な構造

Pythonのタプル(Tuple)とは?リストとの違いや使い方をやさしく解説

Pythonの条件分岐(if文)とは?基本構文から応用までやさしく解説

Pythonのループ(for / while)とは?繰り返し処理の基本をやさしく解説

Pythonのモジュール(Module)とは?コードを分割・再利用する方法

Pythonのimport文とは?モジュールを読み込んで機能を拡張しよう

Pythonの標準ライブラリ(Standard Library)とは?便利な内蔵機能を紹介

NumPy(ナンパイ)とは?Pythonで高速な数値計算を行うための基本ライブラリ

Pandas(パンダス)とは?Pythonでデータを簡単に操作・分析できる強力ライブラリ

Matplotlibとは?Pythonでグラフを描くための基本ライブラリ

Pythonのクラス(Class)とは?オブジェクト指向の基本をわかりやすく解説!

Pythonのオブジェクト(Object)とは?クラスとの関係や特徴をやさしく解説

Pythonの継承(Inheritance)とは?親クラスから機能を受け継ぐしくみを解説

Pythonのメソッド(Method)とは?クラスとオブジェクトの操作方法をわかりやすく解説

Pythonのコンストラクタ(__init__)とは?クラスの初期化を自動化する仕組みを解説!

Pythonのインタプリタ(Interpreter)とは?動作のしくみと使い方を解説

Jupyter Notebook(ジュピター・ノートブック)とは?Python学習やデータ分析に最適な環境

Pythonの仮想環境(Virtual Environment)とは?プロジェクトごとに安全に環境を管理しよう

pip(パッケージ管理ツール)とは?Pythonのライブラリを簡単にインストール・管理しよう

Pythonのスクリプトファイル(.py)とは?作り方・実行方法・基本構文を解説

Pythonの例外処理(Exception Handling)とは?エラーからプログラムを守る方法を解説

Pythonのtry / except構文とは?エラーを防いで安心なコードに!

Pythonのassert文(アサーション)とは?条件チェックでバグを防ごう

Pythonのデコレーター(Decorator)とは?関数に機能を追加する便利な仕組み

Pythonのリスト内包表記(List Comprehension)とは?