标签:return 函数 python day4 args ret kwargs 装饰
离上一次写4天了,今天主要讲讲装饰器
装饰器:
原则:开放封闭原则,对扩展是开放的,对修改是封闭的
语法糖:@
作用:不想修改原函数的调用方式,但是还想在原来的函数前后添加功能
装饰器的固定模式:def wrapper(f):
def inner(*args,**kwargs):
#添加装饰器之前
ret = f(*args,**kwargs)
#添加装饰器之后
return ret
return inner
@wrapper #相当于func = wrapper(func)
def func() #被装饰的函数
pass
看不懂装饰器函数的话,简单理解一下:@wrapper直接就是将你装饰的函数变为装饰器函数的内函数
举例:
1.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),
要求登录成功一次,后续的函数都无需再输入用户名和密码
FLAG = False
def login(f):
def inner(*args,**kwargs):
global FLAG
'''登录程序'''
if FLAG:
ret = f(*args,**kwargs)
return ret
else:
username = input('username')
password = input('password')
if username == '123' and password == '456':
FLAG = True
ret = f(*args,**kwargs)
return ret
return inner
@login
def shoplist_add():
print('添加一个数据')
标签:return,函数,python,day4,args,ret,kwargs,装饰 来源: https://www.cnblogs.com/FlowerNotGiveYou/p/11155204.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。