zoukankan      html  css  js  c++  java
  • 装饰器

    没有修改被修饰函数的源代码,也没有修改被修饰函数的调用方式,但是也没有为被修饰函数添加新功能
    # 带参数验证登录的装饰器
    user_lisr = [{"user_name": "aitg", "passwd": "123456"}, {"user_name": "aitg1", "passwd": "123456"},
                 {"user_name": "yuyue", "passwd": "123456"}, {"user_name": "yuyue1", "passwd": "123456"}]
    
    yonghuxinxi = {"user_name": "None", "passwd": None}
    
    
    def yz(func):
        def gn(*args,**kwargs):
            if yonghuxinxi["user_name"] != "None" and yonghuxinxi["passwd"] == True:
                print('%s你好,欢迎回来到京东' % yonghuxinxi["user_name"])
                kes = func(*args,**kwargs)
                return kes
            else:
                name = input('请输入账号').strip()
                pass_wd = input('请输入密码').strip()
                for i in user_lisr:
                    if name == i['user_name'] and pass_wd == i['passwd']:
                        yonghuxinxi["user_name"] = name
                        yonghuxinxi["passwd"] = True
                        print('%s你好,欢迎回来到京东' % (name))
                        kes = func(*args,**kwargs)
                        return kes
                else:
                    print("账号或密码错误请重新登陆")
    
        return gn
    
    
    def index(*args,**kwargs):
        print('欢迎来到京东')
    
    
    @yz
    def home(*args,**kwargs):
        print('欢迎来到个人中心' )
        print(*args)
    
    
    @yz
    def shopping_car(*args,**kwargs):
        print('购物车')
    
    
    @yz
    def order(*args,**kwargs):
        print('订单中心')
     
  • 相关阅读:
    Vue的style与class
    position记录
    JS 原型模式创建对象
    Js 栈和堆的实现
    slice深拷贝数组
    Vue路由query传参
    Object.prototype.toString.call(value)
    Node里面的对象创建问题
    Django模板语言 标签整理
    JavaScript基础
  • 原文地址:https://www.cnblogs.com/zhangguanghe/p/8734987.html
Copyright © 2011-2022 走看看