Python 编写生成器函数

  • Post category:Python

生成器函数是一种特殊的函数,可以在执行时生成一系列值,而不是一次性返回所有值。这样可以节省内存空间,特别适用于生成大量数据的情况,例如处理大型数据集时。

在Python中,生成器函数可以使用关键字 yield 定义。每次执行 yield 语句时,函数会暂停并返回一个值,下次调用时继续从上次暂停的位置继续执行。以下是一个简单的生成器函数示例:

def generator_function():
    for i in range(10):
        yield i*i

生成器函数用 yield 保留了执行状态,每次调用 next() 时,函数都会从上一次 yield 的位置继续执行,直到遇到下一个 yield 语句为止。例如:

gf = generator_function()
print(next(gf))  # 输出 0
print(next(gf))  # 输出 1
print(next(gf))  # 输出 4

在这个示例中,生成器函数通过 for 循环生成了值序列,并通过 yield 语句每次返回一个值。下面是另一个更为实用的示例:

def get_filenames(folder_path):
    for filename in os.listdir(folder_path):
        if filename.endswith('.txt'):
            yield os.path.join(folder_path, filename)

该函数会返回指定文件夹中所有以 .txt 结尾的文件的路径。也就是说,每次调用 next() 时,函数会返回下一个文件的路径,直到所有文件都被返回了。使用示例:

for file_path in get_filenames('/path/to/folder'):
    print(file_path)

通过生成器函数,我们可以遍历大量数据集而不必预先生成所有数据,使得程序运行更为高效。在实际应用中,生成器函数可以帮助我们更加高效地完成数据处理、生成题目等任务。