生成器函数是一种特殊的函数,可以在执行时生成一系列值,而不是一次性返回所有值。这样可以节省内存空间,特别适用于生成大量数据的情况,例如处理大型数据集时。
在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)
通过生成器函数,我们可以遍历大量数据集而不必预先生成所有数据,使得程序运行更为高效。在实际应用中,生成器函数可以帮助我们更加高效地完成数据处理、生成题目等任务。