亿豪的python学习 day17

这篇博客详细介绍了Python中的生成器generator,包括其定义、作用和如何节省内存空间。通过生成器函数、内置生成器如enumerate和zip,以及生成器表达式,解释了它们在迭代过程中的工作原理。此外,还探讨了函数式编程的概念,如函数作为参数和高阶函数,以及yield关键字在程序执行中的角色。最后,讨论了生成器的惰性操作和立即操作的优缺点。
摘要由CSDN通过智能技术生成

今天的学习内容

生成器generator

  1. 定义:能够动态(循环一次计算一次返回一次)提供数据的可迭代对象。
  2. 作用:在循环过程中,按照某种算法推算数据,不必创建容器存储完整的结果,从而节省内存空间。数据量越大,优势越明显。
  3. 以上作用也称之为延迟操作或惰性操作,通俗的讲就是在需要的时候才计算结果,而不是一次构建出所有结果。
  4. 生成器 --> 迭代器 + 可迭代对象

生成器函数

  1. 定义:含有yield语句的函数,返回值为生成器对象。
  2. 语法
    – 创建:
    def 函数名():

    yield 数据

    – 调用:
    for 变量名 in 函数名():
    语句
  3. 说明:
    – 调用生成器函数将返回一个生成器对象,不执行函数体。
    – yield翻译为”产生”或”生成”
  4. 执行过程:
    (1) 调用生成器函数会自动创建迭代器对象。
    (2) 调用迭代器对象的__next__()方法时才执行生成器函数。
    (3) 每次执行到yield语句时返回数据,暂时离开。
    (4) 待下次调用__next__()方法时继续从离开处继续执行。
  5. 原理:生成迭代器对象的大致规则如下
    – 将yield关键字以前的代码放在next方法中。
    – 将yield关键字后面的数据作为next方法的返回值。

内置生成器

枚举函数enumerate

1.语法:
for 变量 in enumerate(可迭代对象):
语句

for 索引, 元素in enumerate(可迭代对象):
语句
2. 作用:遍历可迭代对象时,可以将索引与元素组合为一个元组。

zip
1. 语法:

for item in zip(可迭代对象1, 可迭代对象2….):
语句
2. 作用:将多个可迭代对象中对应的元素组合成一个个元组,生成的元组个数由最小的可迭代对象决定。

生成器表达式
  1. 定义:用推导式形式创建生成器对象。
  2. 语法:变量 = ( 表达式 for 变量 in 可迭代对象 [if 真值表达式] )
函数式编程

1.定义:用一系列函数解决问题。
– 函数可以赋值给变量,赋值后变量绑定函数。
– 允许将函数作为参数传入另一个函数。
– 允许函数返回一个函数。
2.高阶函数:将函数作为参数或返回值的函数。
函数作为参数
将核心逻辑传入方法体,使该方法的适用性更广,体现了面向对象的开闭原则。

yield

程序执行过程:
# 调用不执行
# 调用__next__才执行
# 到yield暂时离开
# 再次调用__next__继续执行
# …
程序执行原理: "你看见的代码,实际不是这个样子"
将yield关键字以前的代码定义到next方法中
将yield关键字以后的数据作为next方法返回值

def __iter__(self):
		print("准备数据")
				
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值