码迷,mamicode.com
首页 > 其他好文 > 详细

生成器迭代器

时间:2018-12-11 20:46:28      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:bsp   使用   nbsp   next   记录   try   特点   instance   cti   

函数名  →  第一类对象

函数可以复制

函数可以作为集合类的元素

函数可以作为参数传递

函数可以作为返回值返回

2,闭包

语法: 内层使用外层函数的变量

def wrapper():

  name = "周杰伦"

  def inner():

    print(name)

  return inner

ret = wrapper()

ret()

如何查看一个函数是否是闭包

函数名.__closure__有值就是闭包,none就不是闭包

优点:

1.保护变量不被侵害

2.可以让一个变量常驻内存

 

迭代器

在数据中包含了__iter__是一个可迭代对象

for循坏机制

it= lst.__iter__()

while 1:

  try:

    it__next__()

  except   StopIteration:

    break

优点:

  1,节省内存

  2.,惰性机制

  3,只能向前,不能反复

官方查看xxx是迭代器,可迭代对象

from collections import iterable iterator

isinstance(对象,iterable)

isinstance(对象,iterator)

迭代器一定是可迭代的

可迭代的不一定是迭代器

 

生成器

 

  生成器函数中包含yield:返回数据和return差不多

  return会立即结束这个函数的执行

  yield可以分段的执行一个函数

  生成器函数在执行的时候返回生成器,而不是直接执行

能向下执行的两个条件

  __next__() 执行到下一个yield

  send(),执行到下一个yield 给上一个yield传值

 

所有的生成器都是迭代器都可以直接使用for循环

都可以使用list()函数来获取到生成器内所有的数据

 

生成器中记录的是代码而不是函数的执行

def func():

  print("我的天那")

  yield

gen = func()  创建生成器,此时运行会把生成器函数中的代码记录在内存中

当执行到__next__() 运行此空间中的代码运行到yield结束

优点:节省内存,生成器本身就是代码,几乎不占用内存

特点:惰性机制,只能向前,不能反复

 

生成器迭代器

标签:bsp   使用   nbsp   next   记录   try   特点   instance   cti   

原文地址:https://www.cnblogs.com/heheda123456/p/10104993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!