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

python生成式的send()

随便在网上找了找,感觉都是讲半天讲不清楚,这里写一下。

def generator():
    while True:
        receive=yield 1
        print('extra'+str(receive))


g=generator()
print(next(g))
print(g.send(111))
print(next(g))

 

输出:

1
extra111
1
extraNone
1

 

为什么会这样呢,点进send就能看到一句话
send:Resumes the generator and "sends" a value that becomes the result of the current yield-expression.
就是说 这里yield 1整体被视为一个表达式,你send的内容会作为这个表达式的值,随便你左边用什么东西接收或者不接收,总之yield就是你send进来的那个东西。这个表达式变成你send进来后的东西后继续执行,再次遇到yield,输出yield后面跟着的表达式。
当然通常使用的话都不会输出一个常量,会输出一个和接收到的东西相关的量,不然岂不是白白发送了。

send只有在生成器启动后才能使用,会用send内的值代替当前迭代器停留位置的yield expression并且移动到下一个yield expression并返回yield的值。

转载于:https://www.cnblogs.com/dabney/p/6822451.html

相关文章:

  • JUC之限流利器 Semaphore
  • 日程管理APP测试用例
  • volatile 底层原理以及特性详解
  • js---05 自定义属性
  • 深入解析JMM原理
  • 为Redmine的项目加上起止时间
  • 详尽Netty(一):初探netty
  • Php基础知识测试题
  • 设计模式(四):建造者模式的详细解析
  • [swust1745] 餐巾计划问题(费用流)
  • 详尽Netty(二):源码环境搭建
  • AssetBundle管理机制(上)
  • 详尽Netty(三):Channel
  • 循序渐进之Spring AOP(5) - 创建切面
  • 牛逼!阿里推出国产开源的jdk! 快来试试吧!
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 「译」Node.js Streams 基础
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 2017-08-04 前端日报
  • Asm.js的简单介绍
  • CSS实用技巧干货
  • ES6 学习笔记(一)let,const和解构赋值
  • ES6--对象的扩展
  • Fabric架构演变之路
  • HTML中设置input等文本框为不可操作
  • Linux中的硬链接与软链接
  • October CMS - 快速入门 9 Images And Galleries
  • ubuntu 下nginx安装 并支持https协议
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue官网教程学习过程中值得记录的一些事情
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数据结构java版之冒泡排序及优化
  • 小程序 setData 学问多
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 关于Android全面屏虚拟导航栏的适配总结
  • # 数据结构
  • (2)Java 简介
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (独孤九剑)--文件系统
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (论文阅读30/100)Convolutional Pose Machines
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四) Graphivz 颜色选择
  • (五)关系数据库标准语言SQL
  • (转)【Hibernate总结系列】使用举例
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .“空心村”成因分析及解决对策122344
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET 中让 Task 支持带超时的异步等待
  • .NET框架类在ASP.NET中的使用(2) ——QA