1. 程式人生 > >類的學習筆記(3)——自定義裝飾器及裝飾器的理解

類的學習筆記(3)——自定義裝飾器及裝飾器的理解

例一: 實現多加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)報錯

上面兩個例項僅僅供理解學習用,實際功能不大。