zoukankan      html  css  js  c++  java
  • 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
    

      

      

    
    
  • 相关阅读:
    SQL Server 2005 System Views Map
    SQL语句实现移动数据库文件
    重写系统存储过程:sp_spaceused
    MSSQL2005中的架构与用户
    根据时间段计算有n年n月n天
    Linux中的环境变量 (转)
    计算工龄,格式为n年n月n天
    学习递归CTE
    分区表应用例子
    根据备份文件直接还原数据库
  • 原文地址:https://www.cnblogs.com/Zhu-Xueming/p/7759885.html
Copyright © 2011-2022 走看看