yield表达式形式的应用

基本格式

x = yield 把yield的接收值,赋值给x

def foo():
    while True:
        x = yield   # 函数执行到yield处,暂停,yield后面没有任何返回值,默认返回yield None
        print("x's value is ", x) # next执行,打印出x的值,yield 没有接收任何传值,默认接收None,并赋值给x,
        # 然后继续执行,返回循环体,又执行到yield处,暂停,返回None
g = foo()
print(next(g))
print(next(g))
# 运行结果如下:
# None
# x's value is  None
# None

如何给yield传值

带有关键字yield的函数的执行结果就是生成器,假设为g, 调用g.send(value)方法,就可以给yield传值。g.send(None)就是给yieldNone, 相当于没传,也就等同于next(g) 的执行效果。
注意,g.send(value) 的传值方式是基于一个暂停的位置。也就是说生成器函数必须先执行到yield处,暂停在那里,给yield传值,然后执行next(g)。因此,在使用g.send(value) 给yield传值前,要进行初始化:next(g) 或者g.send(None)
我们可以用装饰器来做生成器的初始化:

def init(g_func):   #定义装饰器函数
    def 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
yield表达式是Python中的一个关键字,用于生成器函数中。它的作用是将一个函数转化为一个迭代器。当函数执行到yield语句时,会将结果返回给调用者,并且保存当前的执行状态,下次调用时会从上次离开的地方继续执行。 在引用中的代码示例中,通过定义一个名为my_range的生成器函数,并使用yield语句来返回每个遍历的数字。这样,我们可以使用for循环来迭代生成器函数的返回值,并打印输出每个值。这样的代码可以模拟range函数的功能。 如果想了解更多关于yield表达式的内容,可以参考引用中提供的链接,该链接是一篇关于Python核心编程的博客文章。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python之yield表达式](https://blog.csdn.net/weixin_30540691/article/details/95142430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [yield表达式 python语法](https://blog.csdn.net/weixin_30249203/article/details/99959791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值