#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:wadeson '''
def foo():
print("----------------start--------------")
while True:
m = yield 5 #5是next方法打印之后的返回值,m是next方法取出的值,yield就是间断跳转
print(m)
print("-------------stop--------------") g = foo()
g.__next__() #这只是取出generator的值,如果print(g.__next__())将会将生成器的值和返回值都打印出来
for i in range(5):
g.send(i)

----------------start--------------
0
-------------stop--------------
1
-------------stop--------------
2
-------------stop--------------
3
-------------stop--------------
4
-------------stop--------------


#将数据塞入到生成器中
def bar(N):
for i in range(N):
yield i*2 g = bar(5)
for i in g:
print(i) def foo():
print("-----------------start-------------------")
while True:
m = yield #当执行这一行的时候,遇到yield后跳转到下面的for循环,g.sned(),而m即是send方法推送进来的i的值
#每次循环到yield都会跳转到g.send()
print(m)
print("-------------stop--------------------") g = foo()
g.__next__()
for i in range(6):
g.send(i) def bar():
print("-----start-----")
m = yield 5
print(m)
d = yield 12
print(d)
print("-----stop------") g = bar()
m = g.__next__()
d = g.send('huang')
print(m,d)
运行步骤:
1、g = bar()声明将bar生成器赋予给变量g
2、执行生成器g.__next__()-----》于是转入到生成器内部-----》打印print("-----start-----")
m = yield 5并执行此行,遇见yield于是跳转,但是返回数值5给m{m = g.__next__()}
3、然后执行g.send('huang'),将字符串huang推送到生成器m,并打印print(m)也就是打印了m的值:huang,执行d = yield 12,遇见yield
进行跳转d = g.send('huang')这个的返回值为12
所以最后打印print(m,d)----》5,12(打印这个之前打印了start、huang)
'''

def foo():
print("----------start---------------")
r = ''
m = yield r
print("m---->",m)
d = yield 12
print(d)
print("---------stop-----------------") def bar():
g = foo()
m = g.__next__()
print("m---",m)
g.send('huang')
print("-------------end--------------") bar()

python之yield的更多相关文章

  1. Python关键字yield的解释(stackoverflow)

    3.1. 提问者的问题 Python关键字yield的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self, dista ...

  2. python 关键字yield解析

    python 关键字yield解析 yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.y ...

  3. [转]Python中yield的解释

    转自: http://python.jobbole.com/83610/ 本文作者: 伯乐在线 - wklken .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 翻译 来源于stackover ...

  4. Python中yield和yield from的用法

    yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交出C ...

  5. Python Deque 模块使用详解,python中yield的用法详解

    Deque模块是Python标准库collections中的一项. 它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除. https://blog.csdn.net/qq_3 ...

  6. [翻译]Python中yield的解释

    问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...

  7. python 关键字yield

    问题 Python 关键字 yield 的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self, distance, m ...

  8. 深入理解python的yield和generator

    原文发表在我的博客主页,转载请注明出处 前言 没有用过的东西,没有深刻理解的东西很难说自己会,而且被别人一问必然破绽百出.虽然之前有接触过python协程的概念,但是只是走马观花,这两天的一次交谈中, ...

  9. 使用Python的yield实现流计算模式

    首先先提一下上一篇<如何猜出Y combinator>中用的方法太复杂了.其实在Lambda演算中实现递归的思想很简单,就是函数把自己作为第一个参数传入函数,然后后面就是简单的Lambda ...

  10. Python基础 (yield生成器)

    如果在一个函数中使用了yield,那么这个函数实际上生成的是一个生成器函数 ,返回的是一个generator object.生成器是实现迭代的一种方式 特点: 其实返回的就是可以的迭代对象 和迭代的方 ...

随机推荐

  1. 【POJ3565】ANTS KM算法

    [POJ3565]ANTS 题意:平面上有2*n个点,N白N黑.为每个白点找一个黑点与之连边,最后所有边不交叉.求一种方案. 题解:KM算法真是一个神奇的算法,虽然感觉KM能做的题用费用流都能做~ 本 ...

  2. HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Tota ...

  3. linux下安装mysql-5.7.25

    1.下载对应安装包 https://dev.mysql.com/downloads/mysql/ 2.卸载旧版本mysql 列出旧版本MySql的组件列表  rpm -qa | grep mysql ...

  4. 出现unmapped spring configuration files found

    intell idea启动出现unmapped spring configuration files found提示. 把spring里面的内容都打勾.

  5. vue下使用echarts折线图及其横坐标拖拽功能

    vue页面中使用折线图,并且有时间段筛选.因此就需要用到横坐标的拖拽功能. 界面效果如下: 现在来看这个效果的实现代码: drawLine() { let that = this, lineDate ...

  6. Favorite Donut--hdu5442(2015年长春网选赛,kmp,最大表示法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5442 打比赛的时候还没学kmp更没有学最大最小表示法,之后做完了kmp的专题,学了它们,现在再来做这道 ...

  7. golang 中的定时器(timer),更巧妙的处理timeout

    今天看到kite项目中的一段代码,发现挺有意思的. // generateToken returns a JWT token string. Please see the URL for detail ...

  8. 提交任务到spark master -- 分布式计算系统spark学习(四)

    部署暂时先用默认配置,我们来看看如何提交计算程序到spark上面. 拿官方的Python的测试程序搞一下. qpzhang@qpzhangdeMac-mini:~/project/spark-1.3. ...

  9. JSP学习(第二课)

    把GET方式改为POST在地址栏上就不会显示. 发现乱码了,设置编码格式(这个必须和reg.jsp中page的charset一致):  但是注意了!我们传中文名,就会乱码: 通过get方式提交的请求无 ...

  10. HDU1176:免费馅饼(dp,数字三角形的应用)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1176 这题就是数字三角行的变形,可惜对于我这个渣渣来说就是没发现,区别是他可以保持在三个点,他左边的点,右 ...