python函数工具——“三大器”

前天学习了迭代器,昨天放假在家中躺了1天,生活还是需要偶尔的惬意。今天继续学习生成器。
首先了解生成器是python中用于创建迭代器的一种便捷方式。生成器允许你定义迭代行为,而不需要像实现迭代器那样编写完整的类。生成器使用’yield’关键词逐个生成值,每次生成一个值之后,生成器函数会暂停其状态,并在下一次调用“__next__()”方法时恢复。
不用生成迭代器的类,而用有关键词‘yield’的函数。
生成器的两种创建方式:
1、使用生成器函数
2、使用生成器表达式
生成器函数
生成器函数与普通函数类似,但使用’yield’语句返回数据而不是’return’。每次调用‘yield’时,函数会暂停并保存当前状态,并在下一次调用’__next__()’方法时恢复。
def simple_generator():    yield 1    yield 2    yield 3
gen = simple_generator()
print(next(gen))  # 输出:1print(next(gen))  # 输出:2print(next(gen))  # 输出:3# print(next(gen))  # 再次调用会引发StopIteration异常
生成器表达式
生成器表达式与列表解释式类似,但返回的是一个生成器对象而不是一个列表。它们使用小括号而不是大括号。
gen_expr = (x * x for x in range(3))
print(next(gen_expr))  # 输出:0print(next(gen_expr))  # 输出:1print(next(gen_expr))  # 输出:4
生成器的优点:
  • 惰性求值(延迟计算):生成器需要时才会生成数据,节省内存,对处理大数据集非常有用。(对于一个数据集,发现某单个数据就挂起,而不要从头开始查找)
  • 简洁易读:使用 yield 关键字编写生成器函数,比手动实现迭代器类更加简洁。
  • 无状态保存:生成器自动保存函数执行状态,无需手动管理迭代器的状态。

使用’for’循环遍历生成器

生成器可以与 for 循环结合使用,无需显式调用 next() 函数,并且在生成器耗尽时自动处理 StopIteration 异常。

def countdown(n):    while n > 0:        yield n        n -= 1

for num in countdown(5):    print(num)

生成器的高级特性

‘send()’方法

生成器不仅可以通过 next() 函数获取值,还可以通过 send() 方法向生成器发送值。

‘close()’方法

close() 方法用于关闭生成器,终止其迭代。

‘throw()’方法

throw() 方法用于向生成器内部引发异常。

迭代器和生成器分别在什么样的场景使用?

  • 生成器:适用于按需生成数据、简化迭代器实现、处理复杂迭代逻辑、数据流水线处理。生成器使代码简洁,并节省内存。(简单)
  • 迭代器:适用于需要完整的迭代器协议、维护复杂对象状态、组合多个迭代器的场景。迭代器类提供更多的灵活性和控制。(复杂)

代码地带

生成器生成斐波那契数列

def fibonacci(limli):    a, b = 0, 1    while a < limli:        yield a        a, b = b, a + b

for num in fibonacci(200):    print(num)

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/87845.html

(0)
guozi's avatarguozi
上一篇 2024年6月3日 下午3:14
下一篇 2024年6月3日 下午3:16

相关推荐

  • 高防cdn是超级神器吗,cdn高防和bgp的区别

    您是否遇到过您的网站经常被黑客攻击、访问速度缓慢、经常宕机的情况呢?这些问题不仅影响您网站的用户体验,甚至会造成重大损失。那么,有没有有效的方法来解决这些问题呢?今天我们就来介绍一…

    行业资讯 2024年4月6日
    0
  • 如何实现服务器运行性能监控?(附技巧)

    在当今互联网时代,服务器承载着越来越多的网络数据和服务,其运行性能的稳定性和高效性成为了企业和用户关注的焦点。然而,要实现服务器运行性能监控并非易事,究竟应该如何做到呢?本文将为您…

    行业资讯 2024年3月29日
    0
  • 挖矿 diff,挖矿cdn

    (2)更新您的操作系统和浏览器:及时更新您的操作系统和浏览器可以修复已知的漏洞,提高系统的安全性,使其不易受到DNS挖矿污染的攻击。 (3)使用可信的DNS服务器:选择可信的DNS…

    行业资讯 2024年5月7日
    0
  • 川畅科技搜搜 的服务器租用费用

    云服务器行业的发展如火如荼,为了满足不断增长的用户需求,川畅科技搜搜推出了全新的云服务器租用服务。作为一家专业的云计算服务提供商,川畅科技搜搜公司拥有先进的技术和经验丰富的团队,为…

    行业资讯 2024年3月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注