视频的容积 发表于 2018-8-5 11:35:49

python-高级特性

  *********生成器*************
  在Python中,这种一边循环一边计算的机制,称为生成器(Generator),节省大量的空间。
  列表生成式,当生成时元素即打印,会占用内存。
  一、读取生成器元素的两种方式:
  *l.next()
  *for循环读取;(生成器是可迭代对象);
  列表生成式,当生成时元素即打印,会占用内存;
  In : l =
  In : print l
  

  
  In : h = (i for i in range(1,11))#将[] 改为()可创建生成器
  *)生成器是可迭代对象
  In : from collections import Iterable #导入模块
  In : lh = (i**2 for i in range(3))
  In : isinstance(lh,Iterable)#判断
  Out: True
  
  *for循环读取
  
  练习:生成著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都
  可由前两个数相加得到
  1, 1, 2, 3, 5,    8, 13,    21, 34,    ...
  
  
  二、*)yield关键字
  a.如果函数里面有yield关键字,那么调用这个函数的结果赋给的变量为生成器
  b.当生成器g调用第一个next方法时,会运行函数,直到遇到第一个yield停止
  c.当调用第二个next方法时,会从停止的地方继续执行,知道遇到下一个yield
  
  *)next方法与yield关键字的关系
  
  
  In : print lh.next()      #第一个next,遇到第一个yirld结束,打印1
  first
  1
  In : print lh.next()      #第二个next,遇到第二个yirld结束,打印2
  second
  2
  In : print lh.next()       #第三个next,遇到第三个yirld结束,打印3
  third
  3
  三、*)生成器的send方法
  a.使用send方法给生成器函数发送数据
  b.使用send方法前,必须先调用一次next()方法
  c.遇到下一个yield停止
  *)消费者-生产者模型
  
  
  
  
  *)生成器实战应用:迷你聊天机器人
  
  
  
页: [1]
查看完整版本: python-高级特性