嵌套函数:
在一个函数里面在定义一个函数(有局部变量的特性,不能在外部调用)
针对装饰器的三个原则:
1.函数即“变量”
2.高阶函数
3.嵌套函数
举下面一个例子
它的运行过程呢可以将装饰器阐述清楚:(每一行后都有标记#后的数字表示编号)
a.定义auth这个函数,然后向下找定义的index()函数,发现没有参数传进去,再接着向下找,@auth(auth_type="local")函数,它将local参数传进去。
b.接着打印传进去的参数类型#3,然后接着定义嵌套函数#4
,直接返回结果,此时将调用他的函数传了进来,比如传了home进来。再进入到嵌套函数wrapper里面,返回函数名,并且加了括号,相当于home()调用
c.接着就向下走,因为home()函数是local类型,所以会让输入账户和密码
d.“ldap”类型也是同理
user,passwd='alex','abc123'#1
def auth(auth_type):#2
print("auth ",auth_type)#3
def outer_wrapper(func):#4
def wrapper(*args,**kwargs):#5
print("wrapper args",*args,**kwargs)#6
if auth_type=="local":#7
username=input("username:").strip()#8
password=input("passsword:").strip()#9
if user==username and passwd==password:#
print("