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')
这个函数就没有被装饰,但是如果把这个函数放在最上面,就会被装饰,想要被装饰但没有作用
当定义装饰器之后的作用什么时候,如果不想后面的函数被装饰怎么办
相关分类