装饰器学习

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# author:leo
# datetime:2020/3/17 9:16
# software: PyCharm
#闭包
def outer():
a=12
def inner():
print(a)
return 1
return inner
demo=outer()
print(demo())
# #装饰器
def auth(func):
print('开始运行')
def one():
return func()
return one
@auth
def test():
return "nihao"
print(test()) #相当于 auth(test)()
# #带参数装饰器
def auth1(func):
print('开始运行')
def one1(*args,**kwargs):
print(args)
print(kwargs)
return func(*args,**kwargs)
return one1
@auth1
def test1(a,b):
return a+b
print(test1(a=4,b=9)) #相当于 auth1(test1)(a=4,b=9)
#装饰器带参数
def auth2(*args,**kwargs):
print(args)
def one2(func):
def two2(*args,**kwargs):
return func(*args,**kwargs)
return two2
return one2
@auth2(1,2)
def test2(a,b):
return a+b
print(test2(1,9))#相当于 auth2(1,2)(test2)(a=4,b=9)
posted @ 2020-03-17 11:33  leo0362  阅读(163)  评论(0)    收藏  举报