zoukankan      html  css  js  c++  java
  • 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爬虫框架什么的,继续学习。

    人生若只如初见,何事秋风悲画扇。

  • 相关阅读:
    微信公众号开发第三课 实现简单微信文本通讯
    微信公众号开发第二课 百度BAE搭建和数据库使用
    微信公众号开发第一课 预备知识和申请权限账号
    joomla3.1安装不通过Magic Quotes GPC解决方法
    获取汉字拼音的简便方法
    C#快速学习笔记(译)续一
    C#快速学习笔记(译)
    Xcode中如何集成Unity
    【ios开发】iOS App测试方案
    【IOS开发】SimPholders的使用
  • 原文地址:https://www.cnblogs.com/Martrix-revolution/p/9017546.html
Copyright © 2011-2022 走看看