Python全系列 教程
3567个小节阅读:5931.3k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
【示例】测试生成器工作原理(send)
xxxxxxxxxx
# send的作用是唤醒并继续执行,发送一个信息到生成器内部
def foo():
print("start")
i = 0
while i<2:
temp = yield i
print(f"temp:{temp}")
i=i+1
print("end")
g = foo()
print(next(g))
print("*"*20)
print(g.send(100))
print(next(g))
"""
运算结果:
start
0
********************
temp:100
1
temp:None
end
Traceback (most recent call last):
File "C:\Users\webChubby\PycharmProjects\网络编程\test.py", line 14, in
print(next(g))
StopIteration
"""
什么是生成器?
生成器仅仅保存了一套生成数值的算法,并且没有让这个算法现在就开始执行,而是我什么时候调它,它什么时候开始计算一个新的值,并给你返回。
生成器特点:
- 生成器函数生成一系列结果。通过
yield
关键字返回一个值后,还能从其退出的地方继续运行,因此可以随时间产生一系列的值。- 生成器和迭代是密切相关的,迭代器都有一个
__next__()
成员方法,这个方法要么返回迭代的下一项,要么引起异常结束迭代。- 生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用
next()
函数和send()
函数恢复生成器。- 生成器看起来像是一个函数,但是表现得却像是迭代器
实时效果反馈
1. 如下关于生成器和yield的说法,错误的是:
A 含有yield语句的函数,不一定是生成器
B 每次调用yield,函数执行会暂停,可以使用next()
函数和send()
函数恢复生成器
C 生成器函数生成一系列结果,本质就是:通过yield
关键字返回一个值后,还能从其退出的地方继续运行,因此可以随时间产生一系列的值
答案
1=>A