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

    flage = 0
    def wapper(fun):#fun是被装饰的函数   #wapper是给fun装饰函数的装饰器函数
        def inner(*args,**kwargs):#接收任意类型的参数
            global flage #局部变量变成全局变量
            #登录功能
    
            if flage==1:
                ret = fun(*args,**kwargs) #fun是被装饰的函数
                return ret
            else:
                username=input('请输入用户名:')
                password=input('请输入密码')
                if username=='aaa'and password=='123456':
                    flage=1#登录成功设置为1用global
                    ret=fun(*args,**kwargs)
                    return ret#函数fun返回值
                else:
                    print('登录失败')
        return inner#返回函数名()
    
    @wapper#等同于shopp_add=wapper(shopp_add)
    def shopp_add():
        print('增加一个物品')
    @wapper#等于shopp_del=wapper(shopp_del)
    def shopp_del():
        print('删除一个物品')
    
    shopp_add()
    shopp_del()
    
    运行结果:
    请输入用户名:Mr.Gao
    请输入密码123456
    增加一个物品
    删除一个物品
    
    def log(fun):
        def inner(*args,**kwargs):
            res=fun(*args,**kwargs)
            with open('log.txt','a') as f: #a代表给文件追加内容
                f.write(fun.__name__+'
    ')
            return res
        return inner
    @log#等同于shoplist_add=kwargs(shoplist_add)
    def shoplist_add():
        print('增加一个物品')
    
    @log
    def shoplist_del():
        print('删除一个物品')
    shoplist_add()
    shoplist_del()
    shoplist_add()
    shoplist_del()
    
    运行结果:
    增加一个物品
    删除一个物品
    增加一个物品
    删除一个物品
    
  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/gfhh/p/11575385.html
Copyright © 2011-2022 走看看