python 之装饰器的应用

装饰器的作用:用来装饰特定函数,

原则:不改变原来的函数代码,不改变函数调用方式,为函数增加新的功能

应用:假设我定义了一个登录页面的函数,登录后显示登录成功,我想,在不修改函数的同时让每次登录有个验证用户名和密码的过程,登录成功则执行函数,不成功提醒用户重新输入。

分析:1,定义一个函数  2,定义另一个函数,验证成功后执行这个函数命令

#!coding:utf-8
# Author:pymingming
user, pwd = 'ming','123'
#装饰器函数 = 高阶函数+嵌套函数组合
def verify(func):#外层函数
    def deco(*args,**kwargs):#嵌套函数
        while True:
            username = input("please input your username:").strip()
            password = input("please input your password:").strip()
            if user == username and pwd == password:
                func(*args,**kwargs)#func需要带括号,相当于执行login()
                break
            else:
                print('invalid username or password, please input again!')
    return deco #deco不能带括号, #login = verfity(login) = deco,相当于return verfity(login)
@verify #执行了上面的装饰函数 ,下面的函数其实在上面的函数内部被执行
def login():
  print('welcome to visit this page') 
login()

运行结果:

please input your password:mki
invalid username or password, please input again!
please input your username:ming
please input your password:123
welcome to visit this page

Process finished with exit code 0

  

  


原文地址:https://www.cnblogs.com/Zhu-Xueming/p/7759885.html