装饰器上节回顾
装饰器主要是由高阶函数和嵌套函数组成的,它由有两大特性:1、不改变被装饰函数原代码;2、不改变被装饰函数调用方式
高阶函数主要有两大特性:1、被装饰函数作为高阶函数的参数;2、return函数
嵌套函数特性:在一个函数内,新定义一个函数
下面我们来看一段代码,给login_index()和login_mang()添加用户密码认证的功能的装饰器。
user=‘gally‘ #定义用户名 password=‘123‘ #定义密码 def auth(func): #定义装饰器 被装饰函数作为高阶函数参数 def deco(*args,**kwargs): #嵌套函数 name=input(‘用户名:‘) passwd=input(‘密码:‘) if name==user and passwd == password: func(*args,**kwargs) else: pass return deco #返回函数 return函数 @auth # login_index=auth(login_index)=deco def login_index(): print(‘welcome index‘) @auth def login_mang(): print(‘welcome mang‘) login_index() #执行 login_mang() #执行
执行结果
用户名:gally 密码:123 welcome index 用户名:gally 密码:123 welcome mang
在这段代码中,没有修改login_index()和login_mang()原代码内容,也没有改变login_index()和login_mang()函数调用方式,同时给login_index()和login_mang()函数添加了用户认证的功能。这就是装饰器,也叫语法糖。
-------不会开发的运维不是好厨师
时间: 2024-12-15 18:10:20