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程序设计有所帮助。

(0)

相关推荐

  • 举例详解Python中的split()函数的使用方法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list) os.path.split():按照路径将文件名和路径分割开 一.函数说明 1.split()函数 语法:str.split(str="",num=string.count(str))[n] 参数说明: str:   表示为分隔符,默认为空格,但是不能为空('').若字符串中没有分

  • 简单介绍Python中的filter和lambda函数的使用

    filter(function or None, sequence),其中sequence 可以是list ,tuple,string.这个函数的功能是过滤出sequence 中所有以元素自身作... filter(function or None, sequence),其中sequence 可以是list ,tuple,string.这个函数的功能是过滤出sequence 中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回. filter

  • 简单介绍Python中的len()函数的使用

    函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数: str:要计算的字符串.列表.字典.元组等 4:返回值:字符串.列表.字典.元组等元素的长度 5:实例 5.1.计算字符串的长度: >>> s = "hello good boy doiido" >>> len(s) 21 5.2.计算列表的元素个数: >>> l = ['h','e','l','l','o'] >>&

  • Python中endswith()函数的基本使用

    函数:endswith() 作用:判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型 相关函数:判断字符串开头 startswith() 一.函数说明 语法:string.endswith(str, beg=[0,end=len(string)])            string[beg:end].endswith(str) 参数说明: string: 被检测的字符串 str:      指定的字符或者子字符串(可以使用元组,会逐一匹配) beg:    设置字符串检测的起始位置(可

  • Python中用format函数格式化字符串的用法

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和:来代替%. "映射"示例 通过位置 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},{1}'.fo

  • Python中使用pprint函数进行格式化输出的教程

    pprint – 美观打印 作用:美观打印数据结构 pprint 包含一个"美观打印机",用于生成数据结构的一个美观视图.格式化工具会生成数据结构的一些表示,不仅可以由解释器正确地解析,而且便于人类阅读.输出尽可能放在一行上,分解为多行时则需要缩进. 以下实例用用到的data包含一下数据 data = [(1,{'a':'A','b':'B','c':'C','d':'D'}), (2,{'e':'E','f':'F','g':'G','h':'H', 'i':'I','j':'J',

  • 详解Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下:     join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串     os.path.join():  将多个路径组合后返回 一.函数说明 1.join()函数 语法:  'sep'.join(seq) 参数说明 sep:分隔符.可以为空 seq:要连接的元素序列.字符串.元组.字典 上面的语法即:以sep作为分隔符,将s

  • 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

  • python中dir函数用法分析

    本文实例讲述了python中dir函数用法.分享给大家供大家参考.具体分析如下: dir 函数返回任意对象的属性和方法列表, 包括模块对象.函数对象.字符串对象.列表对象.字典对象 ...... 相当多的东西. dir函数示例: >>> li = [] >>> dir(li) ['append','count','extend','index','insert', 'pop','remove','reverse','sort'] >>> d = {}

  • python中enumerate函数用法实例分析

    本文实例讲述了python中enumerate函数用法.分享给大家供大家参考.具体分析如下: 今日发现一个新函数 enumerate .一般情况下对一个列表或数组既要遍历索引又要遍历元素时,会这样写: for i in range (0,len(list)): print i ,list[i] 但是这种方法有些累赘,使用内置enumerrate函数会有更加直接,优美的做法,先看看enumerate的定义: def enumerate(collection): 'Generates an inde

  • Python中max函数用法实例分析

    本文实例讲述了Python中max函数用法.分享给大家供大家参考.具体如下: 这里max函数是Python内置的函数,不需要导入math模块 # 最简单的 max(1, 2) max('a', 'b') # 也可以对列表和元组使用 max([1,2]) max((1,2)) # 还可以指定comparator function max('ah', 'bf', key=lambda x: x[1]) def comparator(x): return x[1] max('ah', 'bf', ke

  • python中sleep函数用法实例分析

    本文实例讲述了python中sleep函数用法.分享给大家供大家参考.具体如下: Python中的sleep用来暂停线程执行,单位为秒 #----------------------------------- # Name: sleep.py # Author: Kevin Harris # Last Modified: 02/13/04 # Description: This Python script demonstrates # how to use the sleep() # funct

  • Python中super函数用法实例分析

    本文实例讲述了Python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简单说, super函数是调用下一个父类(超类)并返回该父类实例的方法. 这里的下一个的概念参考后面的MRO表介绍. help介绍如下: super(type, obj) -> bound super object; requires isinstance(obj, type) super(type)

  • Python中property函数用法实例分析

    本文实例讲述了Python中property函数用法.分享给大家供大家参考,具体如下: 通常我们在访问和赋值属性的时候,都是在直接和类(实例的)的__dict__打交道,或者跟数据描述符等在打交道.但是假如我们要规范这些访问和设值方式的话,一种方法是引入复杂的数据描述符机制,另一种恐怕就是轻量级的数据描述符协议函数Property().它的标准定义是: + property(fget=None,fset=None,fdel=None,doc=None) + 前面3个参数都是未绑定的方法,所以它们

  • python中pow函数用法及功能说明

    幂运算是高更数学的应用学科,是一种关于幂的数学运算.同底数幂相乘,底数不变,指数相加.同底数幂相除,底数不变,指数相减.幂的乘方,底数不变,指数相乘.适用于精确计算领域. 计算机作为精确计算的一种方式,含有大量的幂运算.在python中就有内置函数pow函数表示幂的运算. 1.pow()函数 Python的内置函数,它计算并返回x的y次方的值. 2.语法 pow(x, y, z) 3.参数 x -- 数值表达式. y -- 数值表达式. z -- 数值表达式. 4.返回值 返回 x y (x的y

  • python中append函数用法讲解

    如果在做一个地区的统计工作,可以使用列表来帮助我们.输入汉字或者其他字符,比如"01代表汉族",那么在写民族的时候有下拉列表,就可以打01,就会自动识别为汉族.列表是用来大规模数据填报的时候使用,在python中,也有很多使用到列表的时候,那你知道如何在列表的末尾添加新的对象?今天,我们就来认识一下python中可以在列表末尾添加元素的append函数. 1.append()函数 用于在列表末尾添加新的对象. 2. 语法 list.append(obj) 3.参数 list:列表对象:

  • python中sort()函数用法详解

    目录 1.函数sort()是对列表就地排序 2.函数sort()修改序列,不返回任何值 3.sorted()函数会返回一个排序列表,不改变原有序列 4.函数sort()是升序排序,如何降序排序,需要用到函数reverse() 5.函数sort()排序的高级用法 (1) key参数 (2) reverse参数 补充:python中sort的用法——对列表中的元素按关键字排序 总结 1.函数sort()是对列表就地排序 >>> x=[8,9,0,7,4,5,1,2,3,6] >>

随机推荐