继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

如何在 Python 中使用 yield 关键字?

慕尼黑5688855
关注TA
已关注
手记 220
粉丝 8
获赞 16

在 Python 中,yield 是一个非常有用的关键字,它可以让函数在多次调用之间保持其内部状态。yield 的主要用途是实现生成器(generator),生成器是一种特殊的迭代器,可以用来遍历一个序列。

在 Python 中,生成器函数与普通函数的区别在于,生成器函数使用 yield 关键字而不是 return 关键字来返回值。当生成器函数被调用时,它返回一个生成器对象,而不是直接执行函数体。只有当生成器对象被迭代时,函数体才会被执行,且每次迭代都会从上一次离开的地方继续执行,直到遇到下一个 yield 语句或函数结束。

以下是一个简单的生成器函数示例,用于生成前 n 个斐波那契数列:

def fibonacci(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

fib = fibonacci(10)
for num in fib:
    print(num)

在这个示例中,fibonacci 函数使用 yield 关键字生成前 n 个斐波那契数列。当我们调用 fibonacci(10) 时,它返回一个生成器对象,而不是直接计算结果。当我们使用 for 循环迭代生成器对象时,函数体才会被执行,每次迭代都会从上一次离开的地方继续执行,直到遇到下一个 yield 语句或函数结束。

除了生成器函数,yield 还可以用于修改函数的行为。例如,我们可以使用 yield 来实现一个简单的计数器:

def counter():
    i = 0
    while True:
        yield i
        i += 1

c = counter()
for _ in range(5):
    print(next(c))

在这个示例中,counter 函数使用 yield 关键字实现一个简单的计数器。当我们调用 counter() 时,它返回一个生成器对象,而不是直接计算结果。当我们使用 next() 函数迭代生成器对象时,函数体才会被执行,每次迭代都会从上一次离开的地方继续执行,直到遇到下一个 yield 语句或函数结束。

总之,yield 关键字在 Python 中非常有用,它可以让函数在多次调用之间保持其内部状态,实现生成器和修改函数的行为。在编写程序时,我们可以根据需要使用 yield 来实现更高效、更灵活的代码。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP