博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生成器和装饰器
阅读量:6596 次
发布时间:2019-06-24

本文共 1394 字,大约阅读时间需要 4 分钟。

生成器

  

  在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         break16  17  18 结果:19 generator:  120 generator:  121 generator:  222 generator:  323 generator:  524 generator:  825 生成器返回值: 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)

 

  

转载于:https://www.cnblogs.com/roygood/p/9719823.html

你可能感兴趣的文章
Win7下Python2.7环境安装paramiko模块
查看>>
自定义switchButton
查看>>
冒泡排序、选择排序、插入排序
查看>>
[ZOJ 4025] King of Karaoke
查看>>
JS学习专辑(7)-"类"的创建和继承
查看>>
NPOI 导出excel表格
查看>>
glBegin()使用小结
查看>>
Filebeat使用内置的mysql模块收集日志存储到ES集群并使用kibana存储
查看>>
服务器部署_linux下部署jprofiler简单备忘
查看>>
Python 面向对象
查看>>
sharepoint 管理中心 修改场管理员密码
查看>>
01-Redhat/Centos7网卡命名介绍及修改方式
查看>>
[SDOI2010]地精部落
查看>>
SQL学习笔记7
查看>>
复制文件
查看>>
PhotonServer新增应用的配置
查看>>
maven的项目结构
查看>>
正则表达式的应用
查看>>
46、android studio第一次使用时卡在gradle下载怎么解决?
查看>>
C# 字符大小转换及 remove,substring,replace
查看>>