# 装饰器 进阶
开发原则:开放封闭原则
装饰器的作用:在不改变原函数的调用 方式的情况下,在函数的前后添加功能
装饰器的本质 :闭包函数
def out(*args,**kwargs):
print(args) #打印了一个数组
print(*args) #打印了每个元素 ==out(*[1,2,3,4])
out(1,2,3,4)
##(1, 2, 3, 4)
##1 2 3 4
优化
def out(*args,**kwargs):
print(args) #打印了一个数组
print(*args) #打印了每个元素 ==out(*[1,2,3,4])
def inner(*args):
print('inner:',args)
inner(*args)
out(1,2,3,4)
'''
(1, 2, 3, 4)
1 2 3 4 ##接收集合 调用大散
inner: (1, 2, 3, 4)
'''
from functools import wraps
@wraps(ff) #内部函数装饰
def wahaha(hello): ##带有参数的装饰器
print('wahha')
print(wahaha.__name__) #打印调用的函数名
print(wahaha.__doc__)