python generator next send
*******oi********oi********oi
上面 * 符号 代表 一系列的代码, oi 代表 一个 【yield】关键字引出的 【数据交换,称之为 oi 】
在一个有【yield】的 function 里:
在出现【yield】的地方有一个【oi】的过程,为什么不是【io】呢,因为它就是先【o】再【i】的。
【o】代表从 generator 里出来一个 value。
【i】代表 generator 从外界收到一个 value。
一般,在外界可以使用 next 或者 send。
一开始,generator 停在 function 开始的地方。就像这样(【】这个符号代表指令执行的位置):
【】**********oi*********oi**********oi
然后,第一次必须用 next 来让 generator 走到【o】的位置,也就是说,这个时候 generator 已经送出一个 value 了。
不过,这个时候【i】却还没有被执行。就像这样:
**********【o】i*********oi**********oi
你如果继续使用 next ,可以,并且你会得到这样的:
**********oi*********【o】i**********oi
也就是说,你的 generator 已经到了第二个【o】的地方,已经送出了第二个 value,并且在第一个【i】的时候,这个 generator 已经被送入了一个 None value。也就是说,使用 next 只能往这个 generator 里面送入一个 None value。
这个时候,你换 send,例如 gen.send(1)。 会变成这样:
**********oi*********oi**********【o】i
你的 generator 停在了第三个【o】的地方,注意是已经执行过这【第三个o了】。而且,你送入了一个整型 value 1,注意,是送给了第二个【i】。
python generator next send的更多相关文章
- python generator与coroutine
python generator与coroutine 协程 简单介绍 协程,又称微线程,纤程,英文名Coroutine.协程是一种用户态的轻量级线程,又称微线程.协程拥有自己的寄存器上下文和栈,调度 ...
- Python:generator的send()方法流程分析
先来一个简单地例子: def foo(): print('starting') while True: r = yield 2 print(r) f = foo() print(f.send(None ...
- python, generator.next()和send()
对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数. 然后第二个next调用,进入生成器函数后,从y ...
- Python generator和yield介绍
Python生成器(generator)并不是一个晦涩难懂的概念.相比于MetaClass和Closure等概念,其较为容易理解和掌握.但相对于程序结构:顺序.循环和分支而言其又不是特别的直观.无论学 ...
- Python的生成器send()方法 & yield_from
生成器对象是一个迭代器.但是它比迭代器对象多了一些方法,它们包括send方法,throw方法和close方法.这些方法,主要是用于外部与生成器对象的交互.本文先介绍send方法. send send方 ...
- python generator: next , sent(msg)区别
对于普通的生成器,第一个next调用,相当于启动生成器,会从生成器函数的第一行代码开始执行,直到第一次执行完yield语句(第4行)后,跳出生成器函数. 然后第二个next调用,进入生成器函数后,从y ...
- python generator用法
转自:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868196510 ...
- Python: generator, yield, yield from 详解
1.Generator Expressions 生成器表达式是用小括号表示的简单生成器标记法: generator_expression ::= "(" expression co ...
- [Python] Use a Python Generator to Crawl the Star Wars API
In this lesson, you will be introduced to Python generators. You will see how a generator can replac ...
随机推荐
- ActiveRecord模式整理
DAO Data Access Object,数据访问对象 DAO是一个软件设计的指导原则,在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象 ...
- HTTP API接口安全设计
HTTP API接口安全设计 API接口调用方式 HTTP + 请求签名机制 HTTP + 参数签名机制 HTTPS + 访问令牌机制 有没有更好的方案? OAuth授权机制 OAuth2.0服务 ...
- CSS命名规范——BEM思想(非常赞的规范)
人们问我最多的问题之一是在CSS类名中“--”和“__”是什么意思?它们的出现是源于BEM和Nicolas Gallagher... BEM的意思就是块(block).元素(element).修饰符( ...
- some OpenGL constants
some OpenGL constants This is from (https://github.com/peterderivaz/pyopengles/blob/master/gl2.py) G ...
- ABP框架实践基础篇之开发UI层
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...
- MySql LIKE 查找带反斜线“\”的记录
解决方法是在反斜线“\前加“\\\”三个反斜杠. SELECT * FROM 表名 AS a WHERE a.字段 \\\\qc0npwqe.3v4', '%') 原理: 写成三个'\'的原因是反斜线 ...
- redis数据结构详解之Hash(四)
序言 Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个元素,所耗费的时间都是一样的,但是数组中的索引 ...
- jQuery全局Ajax事件处理器
1. .ajaxComplete( handler(event, XMLHttpRequest, ajaxOptions) ) 每当一个Ajax请求完成,jQuery就会触发ajaxComplete ...
- OpenCASCADE Job - Shoe Doctor
鞋博士 鞋博士经过8年沉淀,在鞋类工业4.0全流程平台上积累了相当的技术实力,获投资商亲睐. 新的一年,在投资商协助下,将踏上新的征途,因此诚邀您加盟顶层技术合伙人. 如果您具备以下实力,我们期待您的 ...
- Python标准模块--itertools
1 模块简介 Python提供了itertools模块,可以创建属于自己的迭代器.itertools提供的工具快速并且节约内存.开发者可以使用这些工具创建属于自己特定的迭代器,这些特定的迭代器可以用于 ...