Python中yield关键字的用法及运行逻辑

本文通过具体示例,详细解析了Python中生成器(generator)的使用方式和yield关键字的功能,包括如何创建生成器,如何使用next()和send()方法控制生成器的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们以这样一段代码作为例子

def fun():
    print("进入fun函数了")
    x = yield 100
    print("在fun函数中的x:",x)
    yield "谢谢,你也快乐"


f = fun()
result = next(f)
print(result)
result2 = f.send("元宵节快乐")
print("程序外面的result2:",result2)

运行结果

进入fun函数了
100
在fun函数中的x :元宵节快乐
程序外面的result2 :谢谢,你也快乐

解释

f = fun()                          调用fun函数,控制台输出 “进入fun函数了”,执行到yield时等待next调用
result = next(f)             yield继续执行,将100返回给result,函数挂起,此时x并没有被赋值
print(result)               控制台打印100
result2 = f.send("元宵节快乐")      end方法将“元宵节快乐”发送至函数挂起之后的时刻,此时x被赋值为“元宵节快乐”,函数继续运行,在控制台打印“在fun函数中的x :元宵节快乐” ,函数继续运行,再次遇到yeild关键字,并将“谢谢,你也快乐”返回到send之后的时刻,此时result2被赋值为“谢谢,你也快乐”,函数执行完毕
print("程序外面的result2:",result2) 控制台打印“程序外面的result2 :谢谢,你也快乐”   
讲的不对的地方欢迎来邮探讨   pighui233@163.com

转载于:https://www.cnblogs.com/pighui/p/10388569.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值