def dec(f): def in_dec(*arg): print ('call in_dec') if len(arg)==0: return 0 for val in arg : if not isinstance(val,int): return 0 return f(*arg) return in_dec @dec #装饰器的语法def my_sum(*arg): return sum(arg)print my_sum(1,2,3,4)def my_average(*arg): return sum(arg)/len(arg)print my_average(1,2,3)前面两个函数都被装饰器装饰了def turn(*arg): return int(arg[0])print turn('1','2')这个函数就没有被装饰,但是如果把这个函数放在最上面,就会被装饰,想要被装饰但没有作用当定义装饰器之后的作用什么时候,如果不想后面的函数被装饰怎么办
添加回答
举报
0/150
提交
取消