生成器迭代器

本文深入探讨了Python中函数作为第一类对象的概念,包括函数的复制、作为集合元素、参数传递及返回值。同时,详细解释了闭包的定义、语法及如何判断一个函数是否为闭包。此外,还讲解了迭代器与生成器的区别和优势,如节省内存、惰性机制等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数名  →  第一类对象

函数可以复制

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

函数可以作为参数传递

函数可以作为返回值返回

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结束

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

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

 

转载于:https://www.cnblogs.com/heheda123456/p/10104993.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值