本文共 1417 字,大约阅读时间需要 4 分钟。
Python中的yield关键字主要用于定义生成器函数,生成器函数可以通过yield关键字产生可迭代对象。生成器函数能够在不存储所有数据的情况下,按需生成和处理数据,非常适合处理大量或无限数据的情况。
def foo(): print("starting...") while True: res = yield 4 print("res:", res) g = foo()print(next(g)) # 输出: starting...4print("*" * 20)print(next(g)) # 输出: res: None4 def foo(): 定义了一个生成器函数,函数体内有一个无限循环while True:。next(g): "starting..."。while循环,执行res = yield 4,这里yield 4会暂停函数的执行,并返回4给调用者。next(g)会输出starting...4。next(g): yield的位置继续执行。res = yield 4,因为上一次没有传递值,所以res会是None。next(g)会输出res: None。yield 4,第三次调用next(g)会再次返回4。def foo(num): print("starting...") while num < 10: num += 1 yield num for n in foo(0): print(n)
def foo(num): 定义了一个接受参数num的生成器函数。while num < 10:,当num小于10时,执行循环体。yield num,每次循环都会生成当前的num值,然后暂停。for n in foo(0):,调用生成器函数,按需生成值,并打印每个值。import itertools
horses = [1, 2, 3, 4]races = itertools.permutations(horses)print(list(races))
import itertools。horses = [1, 2, 3, 4]。races = itertools.permutations(horses)。print(list(races)),将生成器对象转换为列表对象。生成器函数通过yield关键字,可以按需生成数据,不需要存储所有数据在内存中,非常适合处理大量或无限数据。同时,生成器函数可以灵活控制资源的使用,提升程序的效率和性能。
转载地址:http://gilfk.baihongyu.com/