# 函数的情况 # 1 无参无返回值 # 2 有参无返回值 # 3 无参有返回值 # 4 有参有返回值(万能装饰器) # -------无参无返回值--------- def set_fun(func): def call_fun(): print('权限认证') func() return call_fun @set_fun # test = set_fun(test) def test(): print('ahahahahaahahah') # 装饰前的test是func指向的 # 装饰后的test是call_fun指向的 # test() # ---------有参无返回值--------- def set_fun(func): def call_fun(*args, **kwargs): print('权限认证') func(*args, **kwargs) return call_fun @set_fun # test = set_fun(test) def test(*args, **kwargs): print(args) print(kwargs) # 装饰前test是func指向的 # 装饰后test是指向call_fun的 # test(100, a=200) # -----------无参有返回值------ def set_fun(func): def call_fun(): return func() return call_fun @set_fun # test = set_fun(test) def test(): return 200 # 装饰前test是func指向的 # 装饰后test是指向call_fun的 # print(test()) # -------------有参有返回值(万能装饰器)---------- def set_fun(func): def call_fun(*args, **kwargs): print('权限认证') return func(*args, **kwargs) return call_fun @set_fun # test = set_fun(test) def test(*args, **kwargs): # print(args, kwargs) return args, kwargs # 装饰前test是func指向的 # 装饰后test是指向call_fun的 # 装饰器不去改变原先的结果和值 print(test(100, a=200))
装饰器
最新推荐文章于 2024-03-15 21:38:38 发布