首页 > 编程语言 >关于Python的学习记录(二十五_yield 关键字和生成器)

关于Python的学习记录(二十五_yield 关键字和生成器)

时间:2023-08-29 10:00:46浏览次数:38  
标签:函数 generator Python 生成器 yield next my

Python 中,生成器(Generator)是一种特殊的迭代器,它可以通过函数来创建。生成器函数使用 yield 关键字来产生一个值,并且在每次调用 yield 时暂停执行,保留函数的状态,以便下次调用时可以从上次暂停的地方继续执行。

生成器具有以下特点:

  1. 生成器函数使用 def 关键字定义,但是它们的执行方式与普通函数不同。当生成器函数被调用时,它返回一个生成器对象,而不是立即执行函数体。
  2. 生成器对象是可迭代的,可以在循环中使用,并且可以通过调用 next() 函数来获取下一个值。每次调用 next() 函数时,生成器函数会从上次暂停的地方继续执行,直到遇到下一个 yield 语句。
  3. 生成器函数可以使用 yield 语句产生一个值,并将该值返回给调用者。生成器函数可以多次使用 yield 语句来产生多个值。

如何创建和使用生成器:

def my_generator():
    yield 1
    yield 2
    yield 3
    yield 4
    yield 5

# 创建一个生成器对象
my_generator_obj = my_generator()

# 使用循环遍历生成器中的值
for item in my_generator_obj:
    print(item)

使用 Python 内置的 next() 函数获取生成器中的下一个值

def my_generator():
    yield 1
    yield 2
    yield 3
    yield 4
    yield 5

my_generator_obj = my_generator()

print(next(my_generator_obj)) # 1
print(next(my_generator_obj)) # 2
print(next(my_generator_obj)) # 3
print(next(my_generator_obj)) # 4
print(next(my_generator_obj)) # 5

在上面的示例中,我们定义了一个名为 my_generator() 的生成器函数。该函数使用 yield 语句产生了五个值。我们通过调用 my_generator() 函数来创建一个生成器对象 my_generator_obj,然后使用循环遍历生成器中的值,或者使用 next() 函数获取生成器中的下一个值。

生成器非常适合处理大量数据或者需要逐步生成结果的情况,因为它们可以节省内存,并且可以按需生成数据。

标签:函数,generator,Python,生成器,yield,next,my
From: https://blog.51cto.com/u_16181955/7272595

相关文章

  • opencv-python报错:Exception: Not found: 'python/cv2/py.typed'
    报错:self).run_setup(setup_script=setup_script)File"/tmp/pip-build-env-zsqslesq/overlay/lib/python3.6/site-packages/setuptools/build_meta.py",line158,inrun_setupexec(compile(code,__file__,'exec'),locals())File&qu......
  • python+playwright 学习-80 v1.37版本新增--full-page-screenshot 用例失败截长图
    前言--full-page-screenshot参数是pytest-playwright在使用,在失败时是否进行完整页面截图。默认情况下,仅捕获视口。需开启--screenshot开关(默认:off).用例失败截图环境准备:1.安装playwright最新v1.37版本2.安装pytest-playwright0.4.2版本用例示例fromplaywright.......
  • python小知识
    Python小知识浮点数注意事项#浮点数精度问题fromdecimalimportDecimalprint(0.1+0.1)#0.2print(0.1+0.2)#0.30000000000000004print(Decimal("0.1")+Decimal("0.2"))#0.3,注意:参数是字符串jsonpath提取数据#pipinstalljsonpathfromjsonpathimp......
  • python+selenium+pytest-(5)_yaml文件
    导包importyamlelement.yamllogin:safe:'#element'link:'#element'user:['#element','user1','user2','user3']password:['#element','pw']auth_code:'element......
  • python代码画爱心❤(海龟)
    importturtle#设置标题turtle.title("蜜蜂的程序")turtle.st()#显示海龟print(turtle.position())turtle.color("red","pink")turtle.begin_fill()#填充前turtle.left(90)turtle.penup()turtle.pendown()turtle.circle(60,180)turtle.circle(18......
  • python的print和input的使用
    input前面引号里面包含的字符串会先调用print语句#1.使用input函数分别获得用户输入的个人信息#2.个人信息包含姓名,年龄,性别,爱好,职业信息等#3.使用print函数将输入的结果打印出来name=input("请输入姓名:")age=input("请输入年龄:")sex=input("请输入性别:")hobby=inp......
  • python中计算dna序列的GC含量
     001、对G、C计数进行统计[root@pc1test01]#lsa.fatest.py[root@pc1test01]#cata.fa##测试DNA序列>Rosalind_6404CCTGCGGAAGATCGGCACTAGAATAGCCAGAACCGTTTCTCTGAGGCTTCCGGCCTTCCCTCCCACTAATAATTCTGAGG>Rosalind_5959CCATCGGTAGCGCATCCTTAGTCCAATTAAG......
  • python+playwright 学习-79 设置全局导航超时和全局查找元素超时
    前言playwright默认全局的导航时间是30秒,查找元素超时也是30秒,有以下几个方法设置全局超时时间:browser_context.set_default_navigation_timeout()browser_context.set_default_timeout()page.set_default_navigation_timeout()page.set_default_timeout()导航超时设置......
  • python中输出键最大、最小的项
     001、输出键最大的项a、>>>dict1={"c":30,"a":40,"b":80,"d":20,"e":60}>>>dict1{'c':30,'a':40,'b':80,'d':20,'e':60}>>&......
  • Python学习总结:类属性、类方法、self、cls
    转载:Python学习总结(五)类属性、类方法、self、cls_摩霄志在潜修羽的博客-CSDN博客......