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可以用在没有循环结构中
  • 相关阅读:
    滑动拼图
    CentOS8安装中文输入法
    windows+ubuntu 双系统时间不一致的问题
    Goland 2019下载和安装(带破解补丁和汉化包)
    防火墙站名资源脚本
    linux上以服务方式启动程序kestrel
    NLog实践记录
    sqlserver安装ubuntu
    pyspark提交集群任务
    无法打开hadoop的UI页面
  • 原文地址:https://www.cnblogs.com/jmzitboke/p/10920912.html
Copyright © 2011-2022 走看看