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

    函数即变量

    def out(func):   #函数名作为变量传进来
        func()     #调用函数 函数在没调用的时候就是一个字符串
    
    def demo():
        print(111)
    
    out(demo)

    嵌套函数

    嵌套函数的参数作用域:由内到外查找

    def out():
        name='aaa'
        def inner():
            name='bbb'
            print(name)
        inner()
        print(name)
    
    out()

    装饰器

    装饰器的本质还是一个函数

    在不改变函数调用方式的情况下,给函数额外添加功能

    # 需求:给项目中每一个函数增加函数执行时间
    
    #改变了函数调用方式时
    import time
    def demo():
        print('hahaha')
    
    def out(func):
        def inner():
            start =time.time()
            func()
            end = time.time()
            print(end-start)
        return inner
    
    demo =out(demo)
    demo()
    #用装饰器,不改变函数调用方式
    import time
    def out(func):
        def inner(*args,**kwargs):
            start =time.time()
            func(*args,**kwargs)
            end = time.time()
            print(end-start)
        return inner           
    
    @out    #相当于out(demo)
    def demo(name):
        print(name)
    
    demo('123')
    #一个装饰器添加多个功能
    import time
    def auto(a):
        if a==1:
            def out(func):
                def inner(*args, **kwargs):
                    start = time.time()
                    func(*args, **kwargs)
                    end = time.time()
                    print(end - start)
                return inner
            return out
        elif a==2:
            pass
    
    @auto(1)
    def demo(name):
        print(name)
    
    demo('hehehe')
  • 相关阅读:
    测试
    mysql数据库 select语句全集
    Markdown文本的书写格式详解--有道云笔记
    mysql数据忘记库密码
    最新版mysql基本命令操作
    Python从入门到放弃
    第二阶段冲刺
    周总结15
    找水王
    用户体验评价
  • 原文地址:https://www.cnblogs.com/HathawayLee/p/9895085.html
Copyright © 2011-2022 走看看