装饰器:它可以让其他函数在不需要做任何代码变动的前提下增加额外功能
怎么理解?
1、开放封闭原则,这个时候就使用装饰器
2、python里面,一切皆对象,那么被装饰的函数本质上其实是装饰器函数的形式参数
# 装饰器的函数
def outer(func):
def inner():
func()
return inner
@outer
def f1():
print('OK')
f1()
结果:
OK
依据如上,我们可以总结出,它执⾏的顺序具体为:
先执⾏outer的函数
再执⾏内部函数inner
下来执⾏到inner函数的返回值
再具体到inner的函数,执⾏inner函数⾥⾯的表达式
dict1={'islogin':False}
def outer(func):
def inner():
if dict1['islogin'] ==True:
func()
else:
return print('请登录!!!')
return inner
def login(username='wr',password='admin'):
if username=='wr' and password=='admin':
dict1['islogin']=True
return 'login Success'
else:
return '账户或者密码错误'
@outer
def admin():
print('访问后台管理系统')
while True:
p=int(input('1、登录 2、后台系统\n'))
if p==1:
login()
elif p==2:
admin()
else:
break
结果:
1、登录 2、后台系统
2
访问后台管理系统
1、登录 2、后台系统