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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值