python中Genarator函数用法分析
本文实例讲述了python中Genarator函数用法。分享给大家供大家参考。具体如下:
Generator函数的定义与普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可。Generator函数可以被for循环遍历,而且可以通过next()方法获得yield生成的数据项。
def func(n): for i in range(n): yield i for i in func(3): print i r=func(3) print r.next() print r.next() print r.next() print r.next()
运行结果如下:
0 1 2 0 1 2 Traceback (most recent call last): File "generator.py", line 10, in <module> print r.next() StopIteration
yield保留字与return 语句的返回值和执行原理都不相同。yield生成值并不会中止程序的执行,返回值后程序继续往后执行。return 返回值后,程序将中止执行。
Generator函数一次只返回一个数据项,占用更少的内存。每次生成数据都要记录当前的状态,便于下一次生成数据。
当程序需要较高的性能或一次只需要一个值进行处理时,使用generator函数。当需要获取一次性一组元素的值时,使用序列。
函数里只要有了yield,这个函数就会被编译成一个generator 函数。generator函数object支持python iterator protocol。 每次调用这个对象的next,generator函数就执行到yield,获取到yield生成的值。如果函数返回,就抛出一个异常。这里有个概念就是generator 函数使用yield生成一个值,而不是返回一个值。生成之后函数还没结束,返回了函数就结束了。
>>> x = gensquares(5) >>> print x <generator object at 0x00B72D78> >>> print x.next() 0 >>> print x.next() 1 >>> print x.next() 4 >>> print x.next() 9 >>> print x.next() 16 >>> print x.next() Traceback (most recent call last): File "<stdin>", line 1, in ? StopIteration >>>
希望本文所述对大家的Python程序设计有所帮助。
相关文章
Python的Django中将文件上传至七牛云存储的代码分享
七牛云存储可以帮助服务器转存图片等数据,类似于Dropbox等存储服务,这里就带给大家Python的Django中将文件上传至七牛云存储的代码分享,需要的朋友可以参考下2016-06-06Python强化练习之Tensorflow2 opp算法实现月球登陆器
在面向对象出现之前,我们采用的开发方法都是面向过程的编程(OPP)。面向过程的编程中最常用的一个分析方法是“功能分解”。我们会把用户需求先分解成模块,然后把模块分解成大的功能,再把大的功能分解成小的功能,整个需求就是按照这样的方式,最终分解成一个一个的函数2021-10-10Python编程快速上手——Excel到CSV的转换程序案例分析
这篇文章主要介绍了Python Excel到CSV的转换程序,结合具体案例形式分析了Python操作Excel到CSV转换的操作技巧与相关注意事项,需要的朋友可以参考下2020-02-02Django中ajax发送post请求 报403错误CSRF验证失败解决方案
这篇文章主要介绍了Django中ajax发送post请求 报403错误CSRF验证失败解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-08-08pytorch Variable与Tensor合并后 requires_grad()默认与修改方式
这篇文章主要介绍了pytorch Variable与Tensor合并后 requires_grad()默认与修改方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-05-05
最新评论