zoukankan      html  css  js  c++  java
  • 生成器

    1、生成器:在python中一边循环一边计算的机制,成为生成器,generator.
    创建生成器方法1:用列表生成式的方法
    L = [X*2 for x in range(10)]
    p = (x*2 for x in fange(10)) 把[]改成()
    next() 并且用next()一个个取值,节约了大量的内存空间
     
    创建生成器方法2
    例1 def creatnum(): #斐波那契数列
    a,b = 0,1
    for i in range(10):
      print(b)
      a,b = b ,a+b
    creatnum()
     
    def creatnum():
      a,b = 0,1
      for i in range(10):
         yield b                                有就不是函数,就是生成器,不能调用这个函数
      a,b = b ,a+b
    f =creatnum()         用一个变量来保存,f 是生成器对象
    next()                
    next() 从上次那里开始执行               使用了yield的函数就是生成器,不再是函数
     
    使用了yield的函数就是生成器,不再是函数
    yield关键字有两点作用:
    暂停执行,
    将yield关键字后面表达式的值作为返回值返回,起到了return的作用
     
    可以使用next()函数让生成器从断点处继续执行,即唤醒生成器(函数)
    Python3中的生成器可以使用return返回最终运行的返回值,而Python2中的生成器不允许使用return返回一个返回值
    (即可以使用return从生成器中退出,但return后不能有任何表达式)。
    ---------------------------------------------------------------------------------------------------------------------------------------------
    2、唤醒
    def gen():
      i=0
      while<5:
        temp = yield i         因为在yield 处停止,所以在下次唤醒时候 temp 值为none
        print(temp)
        i +=1
    f = gen()
     
    方式1 f.__next__()
    方式2 f.send () 唤醒的同时向断点处传入一个数据
    ------------------------------------------------------------------------------------------------------------------
    life is short,i need python
  • 相关阅读:
    AspNet上传文件的几个控件(downmoon收集)
    简单的iframe无刷新上传带生产缩略图和水印
    js 操作frameset frame 对象
    C#里的三种定时器类型
    Asp.net上传图片同时生成缩略图和水印图后台代码
    .NET调用新浪微博开放平台接口的代码示例
    用 javascript 获取鼠标(光标)的坐标位置 兼容IE/Firefox等浏览器
    IIS Web服务扩展中没有Asp.net 2.0
    asp.net实现form验证登陆
    Asp.net实现在线截图(大图截取为小图)
  • 原文地址:https://www.cnblogs.com/lvhonglei-python/p/7204586.html
Copyright © 2011-2022 走看看