day_11 生成器
1. 生成器本身是迭代器 1.写迭代器的方式 1.生成器函数 2.生成器表达式 3.各种推导式 2.生成器函数 函数内部有yield, yield返回->return yield把函数分段进行 生成器可以使用for循环来获得里面的元素 def func yield g=func() 1.此时g并不是函数执行,而是获得一个生成器 生成器本身是迭代器,所以再用_next_方法去里面一个一个的取. 取到yield,当yield取完,没有yield的时候,会跑出StopIteration 2.send()的用法和yield基本一致,就是send还有一个额外的功能,给上一个yield传值 而且传值会发生在取值之前,send不能给最后一个yield传值,也不能在第一次执行生成器的时候使用
3. 生成器表达式:基本上和推导式表达式一样,就是括号不一样而已 1.形式g=(结果 for循环 if条件) 2.特点: 1.省内存 2.惰性机制,只能手动一个一个的取 3.只能向前 4.各种推导式 1.列表推导式[结果 for循环 if条件] 2.字典推导式{key:value for循环 if条件} 3.集合推导式{key for循环 if条件} 5.生成器表达式和列表推导式的区别 1.列表推导式一次性加载,比较耗内存,生成器表达式几乎不占内存,只有在使用的时候才分配 使用内存(惰性机制) 2.结果不一样,列表推导式的结果是列表,生成器表达式的结果是生成器 6.yield from 把可迭代对象中每一项数据作为生成器结果返回
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器