Python之裝飾器

2022-06-07 05:18:10 字數 2095 閱讀 7176

#### 第一波 ####

def foo():

print 'foo'

foo    #表示是函式

foo()   #表示執行foo函式

#### 第二波 ####

def foo():

print 'foo'

foo = lambda x: x + 1

foo()   # 執行下面的lambda表示式,而不再是原來的foo函式,因為函式 foo 被重新定義了

############### 基礎平台提供的功能如下 ###############

def f1():

print 'f1'

def f2():

print 'f2'

def f3():

print 'f3'

def f4():

print 'f4'

############### 業務部門a 呼叫基礎平台提供的功能 ###############

f1()

f2()

f3()

f4()

在如上**基礎上,即:對基礎平台的所有功能進行重構,為平台提供的所有功能新增驗證機制,即:執行功能前,先進行驗證。

實現方案如下(僅僅針對基礎平台進行**改動):

############### 基礎平台提供的功能如下 ###############

def w1(func):

def inner():

# 驗證1

# 驗證2

# 驗證3

return func()

return inner

@w1def f1():

print 'f1'

@w1def f2():

print 'f2'

@w1def f3():

print 'f3'

@w1def f4():

print 'f4'

def w1(func):

def inner():

# 驗證1

# 驗證2

# 驗證3

return func()

return inner

@w1

def f1():

print 'f1'

python直譯器會從上到下解釋**,步驟如下:def w1(func):  ==>將w1函式載入到記憶體

@w1沒錯,從表面上看直譯器僅僅會解釋這兩句**,因為函式在沒有被呼叫之前其內部**不會被執行@函式名是python的一種語法糖。

@w1

def f1():

print 'f1' 

# 相當於:

def f1():

print 'f1' 

f1 = w1(f1)

如上例@w1內部會執行以下操作:

@a

@b

@c

def f ():

# 相當於

f = a(b(c(f)))

python裝飾器介紹 Python之裝飾器簡介

python函式式程式設計之裝飾器 1.開放封閉原則 簡單來說,就是對擴充套件開放,對修改封閉。在物件導向的程式設計方式中,經常會定義各種函式。乙個函式的使用分為定義階段和使用階段,乙個函式定義完成以後,可能會在很多位置被呼叫。這意味著如果函式的定義階段 被修改,受到影響的地方就會有很多,此時很容易...

python 找到裝飾器 Python之裝飾器

裝飾器本質上就是乙個python函式,他可以讓其他函式在不需要做任何 變動的前提下,增加額外的功能,裝飾器的返回值也是乙個函式物件。裝飾器的作用 在不改變原函式及原函式的執行的情況下,為原函式增加一些額外的功能,比如列印日誌 執行時間,登入認證等等。乙個簡單的裝飾器 import time def ...

Python之裝飾器

裝飾器就是乙個以函式作為引數並返回乙個替換函式的可執行函式 即裝飾器是乙個函式,其引數為函式,返回值也為函式 可理解為對函式的功能進行拓展,所以叫裝飾 outer為裝飾器,效果為給被裝飾函式返回值結果加負號 defouter fun definner x return fun x return in...