Python天生器详解
观智能别的文章推荐:快来尝鲜!阿里开源3D人体重建模型,单张图片指定动作天生视频天生器
1 天生器函数**(Generator function)**
[*] 详解:
天生器可以利用函数来创建,天生器函数利用yield关键字来产生值,而不是利用return。天生器可以被iter()、next()和for循环调用。在迭代时,天生器函数会从上一次的yield语句处恢复执行(Python保存了上下文),直到碰到下一个yield语句或函数结束。****
所以说天生器是一种特殊的迭代器,更高级的迭代器,__iter__和__next__魔法函数由Python主动实现,不需要我们显式界说。
[*] 案例
做视频推理时利用天生器,即一次返回一帧的推理效果,而不是将所有帧的效果放在列表中一次性返回;
做大语言模型推理时利用天生器,流式输出,而不是等待所有token天生后一次性返回。
[*] 语法: 利用 yield 关键字界说天生器函数。
[*] 优点: 可以看出,天生器的一个重要特性是懒惰计算,即它只在需要时才天生值。这意味着天生器不会一次性计算所有值并存储在内存中,从而节省了大量内存。
[*] 示例:
def fibonacci_generator():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
def square_generator(iterable):
for value in iterable:
yield value * value
#既然说在迭代中每次执行到下一个yield语句,那么可以定义一个最简单形式的生成器
def simple_generator():
yield 100
yield 200
yield 300
if __name__ == '__main__':
fib = fibonacci_generator()
for _ in range(10):
print(next(fib),end=" ")# 输出: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
print()# 换行
for i in square_generator():
print(i,end=" ") #输出1 4 9 16 25
print()#换行
for i in simple_generator():
print(i, end=" ") # 输出100 200 300
2 天生器表达式与列表推导式
天生器表达式是构建天生器的另一种方式,类似于列表推导式,但利用圆括号 () 而不是方括号 []。
示例:
#通过生成器表达式构建生成器
gen = (x * x for x in range(5))
#普通的列表推导式
l =
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]