#!/usr/bin/env python
#--*-- coding:utf-8 --*--
__author__ = 'Kevin'
def deco(func):
def in_deco(xx,yy):
print ('in deco')
func(xx,yy)
print ('call deco')
return in_deco
#當Python解釋器看到@deco的時候,會調用deco函數
#傳入參數bar,即deco(bar),而後返回一個函數對象in_deco
#bar = in_deco
#bar() in_deco() bar()
#實質也是對閉包的使用
@deco
def bar(x,y):
print('in bar',x+y)
print (type(bar))
bar(1,2)
#!/usr/bin/env python
#--*-- coding:utf-8 --*--
__author__ = 'Kevin'
def dec(func):
print 'call dec!'
def in_dec(*arg): print ('in dec arg=',arg) if len(arg) == 0: return 0 for val in arg: if not isinstance(val,int): return 0 return func(*arg) print ('return in_dec') return in_dec #當Python解釋器看到@dec的時候,就會將 #my_sum做爲參數傳入dec中 #被裝飾的函數my_sum指向新的函數in_dec #裝飾器的實質 就是對咱們閉包的使用 @dec def my_sum(*arg):#my_sum = in_dec print('in my_sum') return sum(arg) #my_sum = dec(my_sum) print (my_sum(1,2,3,4,5)) def my_average(*arg): return sum(arg)/len(arg)