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()
    
    运行结果:
    增加一个物品
    删除一个物品
    增加一个物品
    删除一个物品
    
  • 相关阅读:
    一个主机下创建两个MySQL
    Chrome: Failed to read the 'localStorage' property from 'Window' 的解决办法
    Effective C++
    归并排序
    Daily Note
    关于Beta分布、二项分布与Dirichlet分布、多项分布的关系
    测试公式
    VLAN原理解释
    子网划分
    windows下制作debian U盘启动
  • 原文地址:https://www.cnblogs.com/gfhh/p/11601006.html
Copyright © 2011-2022 走看看