類的學習筆記(3)——自定義裝飾器及裝飾器的理解
阿新 • • 發佈:2018-12-21
例一: 實現多加100
def fun1(x):
def fun2(y):
return x(y)+100
return fun2 #裝飾器
def ff(y):
return y*y ff(4)=16
@fun1 此時fun1相當於執行了 ff= fun1(ff) #x=ff
def ff(y):
return y*y ff(4)=116
例二: 實現過濾非整數型的引數,使能夠實現多數相加
def filterarg(func):
def fit(*arg):
if len(arg) ==0:
return 0
for i in arg:
if not isinstance(i,int):
return 0
return func(*arg)
return fit #裝飾器
@filterarg
def sums(*arg):
return sum(arg) *的作用是將多個引數整合成列表,是指能夠讓sum(arg)執行。注意,sum(arg)中只能傳一個引數,這個引數可以是列表,sum([1,2,3])=6. sum(1,2,3)報錯
上面兩個例項僅僅供理解學習用,實際功能不大。