zoukankan      html  css  js  c++  java
  • python中生成器对象和return 还有循环的区别

    python中生成器对象和return 还有循环的区别

    在python中存在这么一个关键字yield,这个关键字在项目中经常被用到,比如我写一个函数不想它只返回一次就结束那我们就不能用return,因为return后面就不能跟任何东西,意味着函数的结束。那么我们完全可以这么做:

    def main():

       for i in range(1,100):

          yield i

    这样就等于生成了一个循环返回对象,特别在爬虫scrapy中较为常见!yeild和return还有for 上本质有什么区别呢?其实很简单,return 后面跟着返回值在python中的函数如果没有return  其实函数等同于return  None  返回一个空对象,不管返回什么都将意味着函数的结束,请注意是函数是所在的函数结束而不是虚拟机内存的结束,而yield的用法是返回了一个生成器对象

    def gen_generator():
        yield 1
    
    def gen_value():
        return 1
        
    if __name__ == '__main__':
        ret = gen_generator()
        print ret, type(ret)    #<generator object gen_generator at 0x02645648> <type 'generator'>
        ret = gen_value()
        print ret, type(ret)    # 1 <type 'int'>
    本质上是不同的,生成器对象有自身的属性和方法,而for 循环仅仅是作为一个迭代对象,从某种意义来说其实yield和for 都可以用来做迭代使用不同的是yeild可以用在没有循环结构中
  • 相关阅读:
    Linux终端基本命令
    Markdown基本语法
    谷歌浏览器解决”此Flash Player与您的地区不相容“
    谷歌浏览器不可以默认允许flash的解决方法
    MySQL8.0登陆方式
    谷歌浏览器安装位置自定义
    java生成六位验证码
    对AJAX的理解
    对servlet请求的理解
    js60秒倒计时
  • 原文地址:https://www.cnblogs.com/jmzitboke/p/10920912.html
Copyright © 2011-2022 走看看