当前位置: 首页 > article >正文

Python生成器2-250224

  • 应用场景
    • 生成一个大的数据量内容,如果直接生成会占用大量的内存,但当需要时创建,不需要时可以暂停,就可以大量节省内存
import random

def gen_random_num(max_count):
    counter = 0
    while counter < max_count:
        yield random.randint(1000, 9999)
        counter += 1
data_list = gen_random_num(3000000)
# next(data_list)
for item in data_list:
    print(item)
  • 扩展
def func():
    print(111)
    v1 = yield 1
    print(v1)
    
    print(222)
    v2 = yield 2
    print(v2)
    
    print(333)
    v3 = yield 3
    print(v3)
    
    print(444)
data = func()
n1 = data.send(None)# 生成器对象加send方法,也可以执行生成器内部代码,会执行到第3行,暂停下来
# 上面代码先执行send函数,把None传回生成器函数,而n1值为yield的值1
# 第3行的v1得到None这个值
print(n1)
n2 = data.send(666)# v1 = 666
  • Can’t send non-None value to a just-started generator,这说明第一次传给生成器的必须是None
  • 第一次执行send(None)时,就是为了进入生成器,遇到第一个yield开始暂停
  • 理解就可以,一般都不使用

http://www.kler.cn/a/559998.html

相关文章:

  • unity学习52:UI的最基础组件 rect transform,锚点anchor,支点/轴心点 pivot
  • 如何生成traceid以及可视化展示
  • 蓝桥杯 3.搜索
  • Spring Core面试题
  • MySQL数据库连接池泄露导致MySQL Server超时关闭连接
  • 硬件加速与技术创新双轮驱动:DeepSeek和ChatGPT性能进阶的未来蓝图
  • 51单片机-AT24CXX存储器工作原理
  • 深入解析 Linux 文件系统:EXT4、NTFS、NFS、CIFS 等的特点与应用(中英双语)
  • QML 将CheckBox添加到一个组,同一时间只能勾选一个,具有排他性
  • 接雨水的算法
  • 盲视观测者效应:认知的量子诗学 AI回复盲人双缝实验
  • 便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)
  • 华为2025年技术发布会:智能汽车核心技术大爆发
  • 连接数据库的方式
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter22-处理 XML
  • Lecture 2 - Python
  • Apache Tomcat RCE 稳定复现 保姆级!(CVE-2024-50379)附视频+POC
  • JavaWeb-Servlet对象生命周期
  • 系统学习算法:专题十二 记忆化搜索
  • vue从入门到精通(十三):收集表单数据