• 4-1装饰器1


    #!/usr/bin/env python
    # -*- coding:utf-8 -*-

    # 系统自动回收,没有引用,自动回收。
    #匿名函数 无名就会被自动回收
    abc = lambda x:x*3
    print(abc(2))

    #装饰器:
    # 定义= 函数 #装饰其他函数
    # 为其他函数添加附加功能
    # 装饰器 对被修饰的函数是透明的
    # 不改函数源码 不改调用方式

    import time

    def zzz(x): #装饰器
    def y(*aa,**bb):
    cc=time.time()
    x()
    ccc=time.time()
    print('装饰器统计运行时间 %s' %(ccc-cc))
    return y
    @zzz
    def a():
    time.sleep(1) #停3秒
    print('in the a')
    a()

    #装饰器
    #函数是“变量”
    #高阶函数
    # 把一个函数名当做实参的传给另一个函数 不修改函数,为函数加功能
    # 返回值中包含函数名
    #嵌套函数

    #高阶函数+嵌套函数=装饰器

    def bar():
    print('这是bar函数')
    def foo():
    print('这是装饰器')
    bar()
    foo()
    print('显示bar函数的内存地址',bar) #表示内存地址

    #高阶函数
    import time
    def aa():
    time.sleep(1) #等待1秒
    print('函数A')

    def bb(x):
    xx=time.time() #截取开始时间
    print(x) #aa的内存地址
    x() #aa的内容
    yy=time.time() #截取结束时间
    print('运行时间%s' % (yy-xx))
    bb(aa)


    #返回值定义函数(不改函数调用方式)
    import time
    def bar():
    time.sleep(3)
    print('函数AAA')
    def bar1(x):
    print(x) #显示内存地址
    return x
    bar1(bar())
    #a=bar1(bar());a() 等同上条

    print('- - - - - - - - - - - - - - - - ')
    ###嵌套函数
    def foo():
    print('嵌套函数外,这是foo')
    def bar():
    print('嵌套函数内,这是bar ')
    bar()
    foo()

    #完整装饰器++++++++++
    print('###完整装饰器 有缺点###')
    import time

    def xx(z): #装饰器
    def xxx():
    mm=time.time()
    z()
    ww=time.time()
    print('这是装饰器+的功能:运行时间%s' %(ww-mm))
    return xxx
    @xx # aa=xx(aa) #不改变调用方式 在装饰器头部加
    def aa():
    time.sleep(1)
    print('这是AA')

    def bb():
    time.sleep(1)
    print('这是BB')


    aa() #aa函数 头部加 装饰器 @xx
    bb() #bb函数 头部没加 装饰器 @xx
  • 相关阅读:
    C语言强化(五)输出一串数中最小的 k 个
    C语言强化(四)求和为某个值的二叉树路径
    C语言强化(三)求子数组的最大和
    C语言强化(二)设计可以求最小元素的栈
    【转】深入理解Major GC, Full GC, CMS
    一步步优化JVM六:优化吞吐量
    一步步优化JVM五:优化延迟或者响应时间
    一步步优化JVM四:决定Java堆的大小以及内存占用
    一步步优化JVM三:GC优化基础
    一步步优化JVM二:JVM部署模型和JVM Runtime
  • 原文地址:https://www.cnblogs.com/pojue/p/7906748.html
Copyright © 2020-2023  润新知