python3 yield 生成器

版权声明:借鉴时注明出处就行 https://blog.csdn.net/weixin_42144379/article/details/85332668

在 Python 中,使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息

返回 yield 的值 (有 return 作用), 并在下一次执行 next() 方法 从当前位置继续运行。 

(ps: 使用了 yield就会自带next()方法)

调用一个生成器函数,返回的是一个迭代器对象。

 案例1:

# -*- coding: utf-8 -*-

def test1():
    var = 1
    print(var)
    yield var

print("test1:")
test1()

print("next():")
next(test1())

控制台打印:

test1:
next():
1

解释:   在调用  test1 方法时,并不会执行里面的 print(var) 在控制台打印 ,而是返回一个 生成器

只有 调用 test1() 返回的生成器 的 next 方法 如: next(test1()) 才会执行里面的代码

 案例2:

# coding=utf-8

def test2():
    var = 1
    for i in [1,2,3]:
       var += 1
       yield var
       print("我是yield 之后的:"+str(var))

for i in test2():
    print(i)

控制台打印:

2
我是yield 之后的:2
3
我是yield 之后的:3
4
我是yield 之后的:4

解释:  使用 for 循环 会自动调用 test2() 返回的生成器中的 next 方法,从而进行遍历作用.

每次执行到 yield 返回 var 的值打印出来,保存当前的所有运行信息 ,

然后继续执行 打印  "我是yield 之后的:2"

猜你喜欢

转载自blog.csdn.net/weixin_42144379/article/details/85332668