python之yield
#!/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的更多相关文章
- Python关键字yield的解释(stackoverflow)
3.1. 提问者的问题 Python关键字yield的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self, dista ...
- python 关键字yield解析
python 关键字yield解析 yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator.y ...
- [转]Python中yield的解释
转自: http://python.jobbole.com/83610/ 本文作者: 伯乐在线 - wklken .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 翻译 来源于stackover ...
- Python中yield和yield from的用法
yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交出C ...
- Python Deque 模块使用详解,python中yield的用法详解
Deque模块是Python标准库collections中的一项. 它提供了两端都可以操作的序列, 这意味着, 你可以在序列前后都执行添加或删除. https://blog.csdn.net/qq_3 ...
- [翻译]Python中yield的解释
问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...
- python 关键字yield
问题 Python 关键字 yield 的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self, distance, m ...
- 深入理解python的yield和generator
原文发表在我的博客主页,转载请注明出处 前言 没有用过的东西,没有深刻理解的东西很难说自己会,而且被别人一问必然破绽百出.虽然之前有接触过python协程的概念,但是只是走马观花,这两天的一次交谈中, ...
- 使用Python的yield实现流计算模式
首先先提一下上一篇<如何猜出Y combinator>中用的方法太复杂了.其实在Lambda演算中实现递归的思想很简单,就是函数把自己作为第一个参数传入函数,然后后面就是简单的Lambda ...
- Python基础 (yield生成器)
如果在一个函数中使用了yield,那么这个函数实际上生成的是一个生成器函数 ,返回的是一个generator object.生成器是实现迭代的一种方式 特点: 其实返回的就是可以的迭代对象 和迭代的方 ...
随机推荐
- Centos7.0配置MySQL主从服务器
主服务器:192.168.186.131 从服务器:192.168.186.133 主从服务器mysql版本尽量保持一致,安装步骤请阅mysql安装步骤 一.修改主服务器配置文件 # vi /et ...
- java generic super, extend
//Apple Orange 都继承自Fruit类,同时Jonathan是Apple的子类 List<? extends Fruit> list = new ArrayList< ...
- [报错]编译报错:clang: error: linker command failed with exit code 1及duplicate symbol xxxx in错误解决方法之一
今天添加了一个新类(包括m,h,xib文件),还没有调用,—编译遇到如下错误,根据错误提示, duplicate symbol param1 in: /Users/xxxx/Library/Devel ...
- Big Data资料汇总
整理和翻新一下自己看过和笔记过的Big Data相关的论文和Blog Streaming & Spark In-Stream Big Data Processing Discretized S ...
- Zabbix监控基础
1. 安装前准备 setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config ...
- Azkaban简介及使用
一.Azkaban概述 Azkaban是一个分布式工作流管理器,在LinkedIn上实现,以解决Hadoop作业依赖性问题. 我们有需要按顺序运行的工作,从ETL工作到数据分析产品. 特点: 1)给用 ...
- MySQL的表分区详解 - 查看分区数据量,查看全库数据量----转http://blog.csdn.net/xj626852095/article/details/51245844
查看分区数据量,查看全库数据量 USE information_schema; SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PAR ...
- nsq小试牛刀-0.3.0 API变更
NSQ是由知名短链接服务商bitly用Go语言开发的实时消息处理系统,具有高性能.高可靠.无视单点故障等优点,是一个非常不错的新兴的消息队列解决方案. nsg易于配置和部署,所有参考都通过命令行指定, ...
- 利用wget批量下载http目录下文件
原理:下载你需要down的目录页面的index.html,可能名字不是如此!!!之后用wget下载该文件里包含的所有链接! 例如:wget -vE -rLnp -nH --tries=20 --tim ...
- Java-多线程基本
Java-多线程基本 一 相关的概念 进程:是一个正在执行中的程序 每个进程都有一个执行的顺序,该顺序是一个执行路径,或者叫一个控制单元 线程:就是进程中的一个独立的控制单元,线程在控制着进程的执行 ...