Python-生成器

介绍

Python生成器是一种特殊的迭代器,它可以在需要时动态地生成值。Python生成器的主要优点是可以减少内存占用,因为它只在需要时生成值,并且可以一次生成一个值,而不是一次生成所有值。

语法

生成器是由yield语句定义的函数。yield语句可以返回一个值,并暂停函数的执行,直到下一次迭代开始。在下一次迭代开始时,函数将从yield语句暂停的位置继续执行。

案例

def my_gen():
    num = 0
    while num < 10:
        yield "No." + str(num)
        num += 1


for i in my_gen():
    print(i)


def read_file(filename):
    """
    读取文件
    :param filename: 文件名
    :return: 一次返回一行
    """
    with open(filename, 'r') as f:
        for c in f:
            yield c.strip()


# 使用生成器读取文件
for line in read_file("server.txt"):
    print(line)

server.txt内容如下

a
1
b
2
c
3

上面写了两个案例,一个是模拟序列生成,每次取都加一,二是模拟文件逐行读取

运行结果

No.0
No.1
No.2
No.3
No.4
No.5
No.6
No.7
No.8
No.9
a
1
b
2
c
3

使用场景

  • 大数据集的处理:当需要处理大数据集时,使用Python生成器可以大大减少内存占用。Python生成器一次只生成一个值,并且只在需要时生成值,因此可以避免一次性加载整个数据集到内存中。
  • 延迟计算:当需要进行延迟计算时,使用Python生成器可以减少计算时间和内存占用。Python生成器可以在需要时动态地生成值,并且只在需要时计算值,因此可以避免在不需要时浪费计算时间和内存。
  • 无限序列的生成:当需要生成无限序列时,使用Python生成器是非常方便的。Python生成器可以一直生成值,而不需要事先知道序列的长度或在内存中存储整个序列。

总结

Python生成器是一种非常有用的特性,它可以帮助开发人员高效地处理大数据集、进行延迟计算和生成无限序列。在日常开发中,使用Python生成器可以减少内存占用和计算时间,从而提高代码的性能和可读性。


欢迎关注,学习不迷路!

你可能感兴趣的:(python,python,开发语言)