#!/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)