python人生如初见之初见yield
今天学习爬虫Scrapy框架搭建的时候,了解了yield的用法。了解一个东西,无外乎 WHAT? HOW? WHY?
WHAT
yield英文意思是屈服,退位,放弃。额。。。其实它是Python中的一个关键字。通俗的来说,你再IDLE中打出来会变黄。(>)<)
HOW
二话不说先举个例子
def test_yield(n):
for i in range(n):
yield i**2
for i in test_yield(5):
print(i, " ",end="")
输出什么?自己试试,还是先说吧
你就坐不住了,这这和return有什么区别呢????
下面再写个return
def sqare(n):
ls = [i**2 for i in range(n)]
return ls
for i in sqare(5):
print(i, " ",end="")
输出什么?还用说吗 >)
没错我初见的yield就是这样用的,看似和return差不多
前方高能
FALSE WHY
既然和return用法差不多,那why yield????
那么你可以试试这样
def sqare(n):
ls = [i**2 for i in range(n)]
return ls
for i in sqare(1000000000000000000000000000000):
print(i, " ",end="")
傻脸了吧 : )
你再试试这样
def yield_test(n):
for i in range(n):
yield i**2
for i in yield_test(1000000000000000000000000000000):
print(i, " ",end="")
是不是感觉良好的不得不的了哈哈哈
原理还要说吗,还是说说,避免我以后忘了。: )
TRUE WHY
Advantage 1
yield关键字它可以在循环执行一次后冻结循环,冻结!!! !不等于重新开始!!!
所以当你用for循环调用它的时候,它可以一次次的输出,不像return一样非要一次性输出,大大加强了程序可观性。
Advantage 2
yield的一次次输出,让它输出的结果只占用一个元素的存储空间
RETURN是兄弟
其实没有什么可比性
适当的时候,选用适当的关键字,所有的所有,才构成了最great的程序
YIELD深层次
yield关键字用的地方很多很多,Scrapy爬虫框架什么的,继续学习。
人生若只如初见,何事秋风悲画扇。
python人生如初见之初见yield的更多相关文章
- [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …
[Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...
- 【Python注意事项】如何理解python中间generator functions和yield表情
本篇记录自己的笔记Python的generator functions和yield理解表达式. 1. Generator Functions Python支持的generator functions语 ...
- Python中的生成器与yield
对于python中的yield有些疑惑,然后在StackOverflow上看到了一篇回答,所以搬运过来了,英文好的直接看原文吧. 可迭代对象 当你创建一个列表的时候,你可以一个接一个地读取其中的项.一 ...
- Python协程:从yield/send到async/await
这个文章理好了脉落. http://python.jobbole.com/86069/ 我练 习了一番,感受好了很多... Python由于众所周知的GIL的原因,导致其线程无法发挥多核的并行计算能力 ...
- 转-[Python 学习]2.5版yield之学习心得
在 shhgs 发布了关于< Py 2.5 what’s new 之 yield>之后,原来我不是特别关注 yield 的用法,因为对于2.3中加入的yield相对来说功能简单,它是作为一 ...
- Python并发实践_02_通过yield实现协程
python中实现并发的方式有很多种,通过多进程并发可以真正利用多核资源,而多线程并发则实现了进程内资源的共享,然而Python中由于GIL的存在,多线程是没有办法真正实现多核资源的. 对于计算密集型 ...
- Python入门之迭代器/生成器/yield的表达方式/面向过程编程
本章内容 迭代器 面向过程编程 一.什么是迭代 二.什么是迭代器 三.迭代器演示和举例 四.生成器yield基础 五.生成器yield的表达式形式 六.面向过程编程 ================= ...
- 新手学python(3):yield与序列化
1 Yield生成器 Yield是我在其他语言中没有见过的一个属性,算是python的一大特色,用好之后可以使代码更简洁.考虑一个简单的例子,文件的遍历.要遍历一个目录下的所有文件需要递归的操作.如果 ...
- python迭代器与生成器及yield
一.迭代器(itertor) 1.可迭代: 在Python中如果一个对象有__iter__()方法或__getitem__()方法,则称这个对象是可迭代的(iterable). 其中__iter__( ...
随机推荐
- 安卓开发之生成cache目录和files目录
package com.lidaochen.test; import android.os.Bundle; import android.support.v7.app.AppCompatActivit ...
- Web编程规范之三层架构设计规范
本篇是我对Web开发规范中关于三层架构设计规范的一些浅见.虽然三层架构是比较普通,也比较简单的架构设计模式.但是随着业务的增长,涉及到的对象越来越多,处理的逻辑越来越复杂.这其中难免会出现设计不当,从 ...
- nginx实现fastcgi反向代理
实现FastCGI: CGI的由来:最早的Web服务器只能简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html文件,但是后期随着网站功能增多网站开发也越 ...
- Linux命令——rpm
翻译自:20 Practical Examples of RPM Commands in Linux 国内译文:20个Linux中RPM命令的实际示例 前言 包管理机制——RPM.dpkg rpm本身 ...
- 《构建之法》第五次作业——Alpha项目测试
博客开头 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign?page=6 这个作业要求在 ...
- JDK源码那些事儿之PriorityBlockingQueue
今天继续说一说阻塞队列的实现,今天的主角就是优先级阻塞队列PriorityBlockingQueue,从命名上看觉得应该是有序的,毕竟是优先级队列,那么实际上是什么情况,我们一起看下其内部实现,提前说 ...
- Mac系统上,Firefox和Selenium不兼容的情况
解决办法,检查环境: Python 2.7.10 Firefox 46版本 Selenium 2.53.6 注意:将Firefox自动更新关闭,否则可能会出现自动升级以后无法执行Selenium用例的 ...
- 通过trace分析优化器如何选择执行计划
1. mysql> show variables like "optimizer_trace%"\G;*************************** 1. row * ...
- vue 自定义全局组件
- ServletRequest、 HttpServletRequest、Request的联系与区别
一. servlet理论上可以处理多种形式的请求响应形式 http只是其中之一 所以HttpServletRequest HttpServletResponse分别是ServletRequest和Se ...