#### 第一波 ####
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...