def func():
print("我叫周润发")
return "林志玲" # return在函数中表示返回的意思 ret = func()
print("返回值是", ret) # 函数中包含了yield, 此函数就是生成器函数
# 大坑: 生成器函数运行之后. 产生一个生成器. 而不是运行函数
def func():
print("我叫周润发")
yield "林志玲" # yield表示返回. 不会终止函数的执行
print("宝宝干嘛去了??")
yield "宝宝回来了"
print("宝宝你在干嘛?")
# yield "没了" ret = func() # 执行函数, 此时没有运行函数.
# # 此时我们拿到的是生成器
print("返回值是", ret) # <generator生成器 object func at 0x0000000009E573B8> # 执行到下一个yield
print(ret.__next__()) # 第一次执行__next__此时函数才开始执行
print(ret.__next__()) # 执行到下一个yield
print(ret.__next__()) # StopIteration # 买衣服, JACK JONES 10000
def buy():
lst = []
for i in range(10000):
lst.append("衣服%s" % i)
return lst lst = buy()
print(lst) def buy():
for i in range(10000):
yield "衣服%s" % i gen = buy() # 生成器或者迭代器的好处: 节省内存
print(gen.__next__())
print(gen.__next__())
print(gen.__next__()) for yifu in gen: #迭代器. __next__()
print(yifu) lst = list(gen) # 内部使用的是for循环 -> __next__()
print(lst) #
# send() -> __next__()
# send()可以给上一个yield位置传值 def func():
print("韭菜盒子")
a = yield "韭菜鸡蛋"
print("a", a)
b = yield "韭菜西红柿"
print("b", b)
c = yield "火烧"
print("c", c) gen = func() print(gen.__next__()) # 第一个位置用send没有任何意义
print(gen.send("篮球")) # 给上一个yield位置传值
print(gen.send("足球")) def eat():
print("我吃什么啊")
a = yield "馒头"
print("a=",a)
b = yield "⼤饼"
print("b=",b)
c = yield "⾲菜盒⼦"
print("c=",c)
yield "GAME OVER" gen = eat() # 获取⽣成器 ret1 = gen.__next__()
print(ret1)
ret2 = gen.send("胡辣汤")
print(ret2)
ret3 = gen.send("狗粮")
print(ret3)
ret4 = gen.send("猫粮")
print(ret4)

  

Python 生成器函数的更多相关文章

  1. python 生成器函数.推导式.生成器表达式

    一.生成器 什么是生成器,生成器的实质就是迭代器 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 1 def func ...

  2. day13 python生成器函数 推导式 生成器

    day13 python   一.生成器     生成器的本质就是迭代器     生成器的特点和迭代器一样. 取值方式和迭代器一样(__next__())     由生成器函数或生成器表达式来创建   ...

  3. python生成器函数中return的作用

    当生成器函数中含有return时,return不会返回任何值,会直接终止当前生成器,对yield的作用没有影响,当函数执行到return时候,调用next()来执行生成器则会报错,如果使用for循环遍 ...

  4. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  5. python学习日记(生成器函数进阶)

    迭代器和生成器的概念 迭代器 对于list.string.tuple.dict等这些容器对象,使用for循环遍历是很方便的.在后台for语句对容器对象调用iter()函数.iter()是python内 ...

  6. Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器)

    Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数

  7. Python开发——函数【迭代器、生成器、三元表达式、列表解析】

    递归和迭代 小明问路篇解释说明 递归:小明——>小红——>小于——>小东:小东——>小于——>小红——>小明 小明向小红问路,因小红不知道,所以向小于问路,因小于不 ...

  8. python中的生成器函数是如何工作的?

    以下内容基于python3.4 1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函 ...

  9. python全栈开发 生成器 :生成器函数,推导式及生成器表达式

    python 全栈开发 1.生成器函数 2.推导式 3.生成器表达式 一.生成器函数 1.生成器: 生成器的本质就是迭代器 (1)生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(), ...

随机推荐

  1. 5月30---6月2 DedeCMS以及动态仿站

    什么是DedeCMS 织梦内容管理系统(DedeCMS),是一个集内容发布.编辑.管理检索等于一体的网站管理系统(Web CMS),他拥有国外CMS众多特点之外,还结合中国用户的需要,对内容管理系统概 ...

  2. javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决

    javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决 在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间,而在i ...

  3. 2017-3-31/socket

    1. 讲讲你对套接字编程的理解,它的协议是如何的? socket通常称为"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通过套接字向网络发出请求或应答网络请求. 服 ...

  4. 浅谈table、form 标签

    1.<table> 标签 1.1包含的元素 <caption></caption>:表头信息. <tr></tr> :定义一个表格行: &l ...

  5. Ubuntu下环境变量的设置

    远程登录时,不是ssh登陆:  xrdp 可以修改并添加 /etc/xrdp/startwm.sh 代码: #!/bin/sh if [ -r /etc/default/locale ]; then  ...

  6. zabbix3.4.7集成grafana详细步骤

    打开官方网站下载grafana并安装 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.0.4-1. ...

  7. 服务消费和负载(Feign)

    Spring Cloud Feign Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口 ...

  8. xadmin后台分段导出避免timeout

    一.问题 xadmin后台功能很强大,特别在导出的时候格式有xls/xlsx.csv.xml.json.实际常用的还是前面2种.xls格式使用的xlwt,有个缺陷,导出数据过大时,会报ValueErr ...

  9. oo作业总结(一)

    概述 经历了三次oo作业的洗礼,让我对java语言的强大以及面向对象编程有了初步的理解(当然,我是小白).本文接下来就将对自己这三次作业的代码进行分析以及分享自己的心路历程. 基础知识点考核 针对前三 ...

  10. Python Django 之 直接执行自定义SQL语句(一)

    一.执行自定义SQL方法 1.Executing custom SQL directly      直接执行自定义SQL,这种方式可以完全避免数据模型,而是直接执行原始的SQL语句. 2.Manage ...