04_08、生成器
迭代取值:
1. 不依赖于索引取值,__next__()取值
2. 不能重复取值,只能从左往右一个一个取值
索引取值:
1. 必须要是一个容器类型
2. 可以重复取值
二、
函数中的yield关键字的用法:__next__一下,走一个yield,光标就停在了yield
如果再次__next__,会从上一次停留的yield位置继续往下走
def my_range(start, stop=None, step=1): if not stop: stop = start start = 0 while start < stop: yield start start += step for i in my_range(1, 9, 3): print(i)
def index(name): print('%s 准备干饭' % name) while True: food = yield # yield后不写默认为None print('%s 开干 %s' % (name, food)) res=index('ly') res.__next__() # res.__next__() res.send('苹果') res.send('橘子')
五、
yield:
1. 函数内遇到yield关键字把函数变成了生成器
2. yield 也可以返回值,并且支持返回多个(元组形式)
3. 遇到yield,函数不会结束,而是"停住"
4. yield 也支持传值
return
1. 后面可以跟返回值,也支持返回多个(元组形式)
2. 函数遇到return,会立马结束
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通