#!/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. Tiled地图编辑软件

    Tiled官网: http://www.mapeditor.org/ 一个比较简单好用的地图编辑软件.百度可以找到很多教程. 在Egret中,官网提供了Tiled的工具类,但是教程和文档极少...只能 ...

  2. 【BZOJ3894】文理分科 最小割

    [BZOJ3894]文理分科 Description 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行描述,每个格 ...

  3. 为什么Objective-C很难

    转自:http://mobile.51cto.com/hot-322261.htm   2012-03-07 13:43 junwong 开源中国社区 字号:T | T 作为一个Objective-C ...

  4. 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版

    每次开始动手写算法,都是先把插入排序,冒泡排序写一遍,十次有九次是重复的,所以这次下定决心,将所有常规的排序算法写了一遍,以便日后熟悉. 以下代码总用一个main函数和一个自定义的CommonFunc ...

  5. XXL-JOB分布式任务调度平台安装与部署

    配XXL-JOB分布式任务调度平台安装与部署

  6. Maven 构建Spring-Boot工程报错

    Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.6.RELEASE:repackage ...

  7. WSGI的理解 perfect

    https://blog.csdn.net/hzrandd/article/details/10099871 https://blog.csdn.net/cloudxli/article/detail ...

  8. HTTP API 设计指南(转)

    add by zhj (2014-12-16): 今天才知道,原画HeroKu是国外一个很有名的PaaS提供商,公司很可能会将app迁移到他们那里 英文原文: HTTP API Design Guid ...

  9. 在linux上配置Django项目

    依赖包 [root@web01 ~]# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqli ...

  10. Android在使用WebView时,通过Javascript调用JAVA函数

    webView = (WebView) findViewById(R.id.article_webview); //WebView启用Javascript脚本运行 webView.getSetting ...