python中的生成器原理详解

一、什么是生成器?
生成器指的是能够动态(循环一次,计算一次,返回一次)提供数据的可迭代对象;简单来说,是可迭代对象(拥有__iter__方法的类对象为可迭代对象)+ 迭代器(拥有__next__方法的类对象为迭代器)。

二、生成器的作用
在循环过程中,按照某种算法推算数据,不必创建容器存储完整的结果而节省内存空间。数据量越大,优势越明显。以上作用也称为延迟操作或惰性操作,通俗的讲就是在需要的时候才计算结果,而不是一次性构建出所有结果。

三、生成器举例
(1). 代码如下所示:

#encoding = utf-8
"""
@version:3.7
@author:qiuyucheng
@file:generator.py
@time:10:27
"""
class MyGenerator:
    """
    生成器 = 可迭代对象(有__iter__方法) + 迭代器(有__next__方法)
    """
    def __init__(self,stop_value):
        self.__begin = 0
        self.__stop_value = stop_value
    def __iter__(self):
        # 1.可迭代对象返回自身,得到一个迭代器,
        return self
    # 通过自身调用自己的__next__方法,进行迭代。
    def __next__(self):
        if self.__begin >= self.__stop_value:
            raise StopIteration
        temp = self.__begin
        self.__begin += 1
        return  temp

for item in MyGenerator(10):
    print("打印数字:",item)

(2). 结果如下:

打印数字: 0
打印数字: 1
打印数字: 2
打印数字: 3
打印数字: 4
打印数字: 5
打印数字: 6
打印数字: 7
打印数字: 8
打印数字: 9

你可能感兴趣的:(python)