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__( ...
随机推荐
- Java 之 注解
一.注解介绍 注解概念:注解是说明程序的,给计算机看的. 注释概念:用文字描述程序的,给程序员看的. 注解定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是 JDK1.5 及以后 ...
- Python实现YOLO目标检测
作者:R语言和Python学堂 链接:https://www.jianshu.com/p/35cfc959b37c 1. 什么是目标检测? YOLO目标检测的一个示例 啥是目标检测? 拿上图 (用YO ...
- Java中的File操作总结
1.创建文件 import java.io.File; import java.io.IOException; public class CreateFileExample { public stat ...
- 【转】Python之可变参数,*参数,**参数,以及传入*参数,进行解包
https://blog.csdn.net/cadi2011/article/details/84871401 1.定义了一个需要两个参数的函数 def print_str(first, second ...
- ubuntu18 搭建ftp服务器,以及文件目录权限问题
有时候呢我们有一台本地的台式机或者云服务器,我们想要搭个ftp服务器好让我们在内网/外网中方便的传输.保存文件,这样别的任何电脑啊,设备啊,只要访问这个ftp的地址,就可以进行文件传输啦!由于我现在台 ...
- Understanding matrix factorization for recommendation
http://nicolas-hug.com/blog/matrix_facto_4 import numpy as np import surprise # run 'pip install sci ...
- Jmeter+Selenium结合使用(完整篇)
selenium登录后的cookie交接给接口结合使用 一.下载webdriver插件(包含谷歌和火狐驱动),安装好之后需重启jmeter 二.在配置元件中添加jp@gc - Chrome Drive ...
- JS获取当前年份月
//获取完整的日期 var date=new Date; var year=date.getFullYear(); var month=date.getMonth()+1; month =(mont ...
- 使用itchat进行自动微信聊天
import itchat def we_chat(message): #enableCmdQR=2用于linux中显示二维码,hotReload=True退出程序后暂存登录状态 itchat.aut ...
- NOIP2018 保卫王国(动态DP)
题意 求最小权值点覆盖. mmm次询问,每次给出两个点,分别要求每个点必须选或必须不选,输出每次的最小权值覆盖或者无解输出−1-1−1 题解 强制选或者不选可以看做修改权值为±∞\pm\infin±∞ ...