python裝飾器的六種寫法

2022-09-21 20:30:13 字數 795 閱讀 2014

python裝飾器是什麼?

裝飾器本質是乙個函式,它可以讓其他函式在不需要做任何**變動的前提下增加額外功能,裝飾器返回值也是乙個函式物件。

什麼場景下會用到裝飾器?

比如:插入日誌、效能測試、事務處理、快取、許可權校驗等場景。

裝飾器的使用方法:

1. 先定義乙個裝飾器(帽子)

2. 再定義你的業務函式或者類(人)

3. 最後把這裝飾器(帽子)扣在這個函式(人)頭上

# 這是裝飾器函式,引數 func 是被裝飾的函式

def logger(func):

print('我準備開始執行:{} 函式了:'.format(func.__name__))

# 真正執行的是這行

func(*args, **kw)

print('我執行完啦')

# 業務函式

@logger

def add(x, y):

print('{} + {} = {}'.format(x, y, x+y))

執行add函式

add(200, 50)
看看輸出

我準備開始執行:add 函式了:

200 + 50 = 250

我執行完啦。

單例模式的六種寫法

名詞解釋 lazy loading 懶載入 意思就是不在類載入的時候不初始化,而是在呼叫方法的時候初始化。1 懶漢式 執行緒不安全 public class singleton public static singleton getinstance return instance 優點 lazy l...

python帶引數裝飾器的兩種寫法

前言 最近在實現乙個裝飾器的過程中發現了乙個很有意思的地方,在部落格裡面分享出來 不同的寫法 三層函式巢狀,實現了可傳引數的乙個裝飾器。import logging import functools deflogger msg none 日誌 defdector func functools.wra...

qml multitouch的六種訊號

1.canceled list touchpoints 當由於另一項竊取了觸控事件處理而取消了新的觸控事件時,將發出此訊號。此訊號用於高階用途 當有多個multipointtoucharea處理輸入時,或者在乙個閃爍的內部有乙個multipointtoucharea時,它非常有用。在後一種情況下,如...