#!/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)
时间: 2024-08-25 09:06:19