首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 多裝飾器合併技巧:compose 函式將多層 @ 裝飾器簡化為單行

     編輯:更多程式設計知識

Django 視圖常需疊加多個裝飾器(如 @csrf_exempt、@require_POST),導致程式碼冗長。利用高階函式 compose 將多個裝飾器合併為一行。

原理

多層裝飾器等價於嵌套呼叫:


@csrf_exempt
@require_POST
def foo(request): pass

# 等價於
foo = csrf_exempt(require_POST(foo))

compose 實作


def compose(*decorators):
    def decorator(func):
        for dec in reversed(decorators):
            func = dec(func)
        return func
    return decorator

使用方式


@compose(csrf_exempt, require_POST)
def foo(request):
    pass

裝飾器按參數順序從右至左套用,reversed 確保執行順序與原多行寫法一致。

擴充:帶參數裝飾器


def compose_with_args(*decorator_factories):
    def decorator(func):
        for factory in reversed(decorator_factories):
            func = factory()(func)  # 呼叫工廠函式取得實際裝飾器
        return func
    return decorator

小結

compose 模式減少視覺雜訊,提升可讀性,適合固定組合的裝飾器群組(如 API 視圖通用驗證、日誌、權限檢查)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved