yield关键字

'''
yield关键字:
    yield是Python中一个特殊的关键字。它就是生成器
    迭代其实就是循环的概念:
        1.可迭代对象:可以通过循环来实现操作的对象。
        2.迭代器:属于可迭代对象,一次只能取一个值,一直取值到全部取完为止。(程序终结为止)
        3.生成器:是特殊的迭代器,只能通过yield来声明。
        yield关键字只能用在函数或者方法之中。
        yield类似于return关键字。都属于返回数据。return调用函数终止运行。yield调用后,
        一次只生成一个值,一直到值生成完位置。在运行期间,处于挂起状态,随时调用随时获取。

'''


# 可迭代对象
# s = 'poinkjehhsadfoian'

# for i in s:
#     print(i)

# 迭代器:readline()就是标准的迭代器的形态。
# 自定义的迭代器实现:只有可迭代对象 ,才可以转为迭代器
# print(type(s))

# for i in it:
#     print(i)

# print(next(it))  # next()读取迭代器中的值,每次读取一个值,类似于file.readline().只能用于迭代器使用
# print(next(it))
# print(next(it))

# 生成器
# def func():
#     for i in range(0, 10):
#         # return i  #return调用后,函数终止运行,只会返回0
#         yield i #yield执行一次后,处于挂起状态,后续调用时继续产生数据。一直到生成器结束。



# f = func()  # 调用函数,获取生成器
# print(next(f))  # 基于next获取生成器返回值
# print(next(f))
# print(next(f))
# print(next(f))


'''
基于yield猜想操作文件的源码:
    def readlines():
        for line in file.readlines():
            yield line
'''

'''
    测试流程
    1. 测试初始化
    2. 执行测试
    3. 测试收尾结束
'''

def func():
    #测试前
    print('函数中的测试初始化')
    data = '函数产生的测试数据'

    # 测试中
    yield data #将测试数据提取,交由实际测试执行

    # 测试后
    print('函数中的测试结束')

print('测试开始')
# f = func()
func()
# print('测试执行中')
# print(next(f))
# print('测试结束')
# print(next(f))

 

posted @ 2024-12-08 13:11  mafei666  阅读(38)  评论(0)    收藏  举报