python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python yield与yield from的使用

Python yield与yield from的简单使用方式

作者:蓝小白1024

生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yield from用于将一个生成器的值传递给另一个生成器,提升代码效率,常用于爬虫等需分阶段处理的场景

Python yield与yield from的使用

当一个函数带有 yield 的时候,这个函数就叫做生成器。

在一个函数中处理 io 操作时,可以先返回一部分,让程序做其它事情,等处理完其它事情,在进行刚才暂停的地方。

比如:我要爬取某些网站时,解析页面时

代码结构

def get_value(num):
	"""生成器"""
    for i in ["A", "B"]:
        yield f"{i}{num}"

def get_html():
    for i in [1, 2, 3]:
        yield get_value(i)

def get_html_from():
    for i in [4, 5, 6]:
        yield from get_value(i)

if __name__ == '__main__':
    # print(list(get_html()))
    # print(list(get_html_from()))
    for value in get_html():
        print(value)
    print("*" * 50)
    for value in get_html_from():
        print(value)

执行结果

<generator object get_value at 0x000001E5A46C1448>
<generator object get_value at 0x000001E5A46C1D48>
<generator object get_value at 0x000001E5A46C1448>
**************************************************
A4
B4
A5
B5
A6
B6

简单讲, 就是当一个生成器想返回另一个生成器中的值时,就可以使用yied from

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文