设为首页 加入收藏

TOP

python中生成器对象和return 还有循环的区别
2019-05-25 02:07:48 】 浏览:43
Tags: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可以用在没有循环结构中
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python、Java、JavaScript分别能.. 下一篇千万不要错过这几道Python面试题..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目