• 生成器和装饰器


    生成器

      

      在Python中,这种一边循环一边计算的机制,称为生成器:generator

      生成器是一个特殊的程序,可以被用作控制循环的迭代行为

      python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用next()函数和send()函数恢复生成器

      生成器就是可迭代对象,延迟计算、节省内存

      创建:生成器函数,生成器表达式

           #生成器:generator_ex = (x*for in range(10))

     1 def fib(max):
     2     n,a,b =0,0,1
     3     while n < max:
     4         yield b
     5         a,b =b,a+b
     6         n = n+1
     7     return 'done'
     8 g = fib(6)
     9 while True:
    10     try:
    11         x = next(g)
    12         print('generator: ',x)
    13     except StopIteration as e:
    14         print("生成器返回值:",e.value)
    15         break
    16  
    17  
    18 结果:
    19 generator:  1
    20 generator:  1
    21 generator:  2
    22 generator:  3
    23 generator:  5
    24 generator:  8
    25 生成器返回值: done

    装饰器

      装饰器本质是函数,为其他函数添加附加功能

      原则:不修改主函数源代码,不修改主函数的调用方式

      装饰器 = 高阶函数 + 函数嵌套 + 闭包

    高阶函数

      定义:函数接收的参数是一个函数名,或函数的返回值是一个函数名

    函数嵌套

       函数内包着函数

    实现import time

    def timmer(func): #func=test
        def wrapper():
            # print(func)
            start_time=time.time()
            res = func() #就是在运行test()
            stop_time = time.time()
            print('运行时间是%s' %(stop_time-start_time))
         return res
    return wrapper @timmer #test=timmer(test) def test(): time.sleep(3) print('test函数运行完毕')
    return 'test的返回值'

    res=test()
    print(res)
    # res=timmer(test) #返回的是wrapper的地址 # res() #执行的是wrapper() # test=timmer(test) #返回的是wrapper的地址 # test() #执行的是wrapper() # @timmer 就相当于 test=timmer(test)

      

  • 相关阅读:
    浏览器的宽、高度
    表格 强制换行
    post请求
    js验证正则
    js去除空格
    表格事件,表格删除行
    AJAX初始化combox 并取值
    组脚视图
    Git 常用命令
    NSPredicate 根据谓语动词 进行 模糊查询
  • 原文地址:https://www.cnblogs.com/roygood/p/9719823.html
Copyright © 2020-2023  润新知