python中yield用法和return的区别_爬虫:Scrapy 中 yield 和 return 的区别

1.yiled 应用场景:

在 scrapy 中 yield 经常被使用,典型的应用场景包括以下两种:场景一:yield scrapy.Reuqest(url=xxx, callback=self.xxx, meta={"xxx": xxx})场景二:item= XXX()

item["xxx"] = response.xpath("xxx").extract_first()

yield item

2. yield 概念解析yiled 是一个迭代器,可被迭代调用;

要理解迭代器,首先需要注意一点,迭代器应用在循环中;

例如:def func_1():

for i in range(5):

yield f"result : {i}"上面的func() 这个函数就是一个迭代器,在 for i in range(5) 这个循环中,迭代调用 result : {i} 这个表达式;

这样一个迭代器如何使用呢?我们需要 将 func() 函数实例化,并需要用到一个工具 next(),如下:result = func_1() # 此处将 func() 函数实例化

next(result) # 使用 next 调用实例化后的生成器

'result : 0' # 得到【第一次】生成的结果 0

next(result)

'result : 1' # 得到【第二次】生成的结果 1

next(result)

'result : 2' # 得到【第三次】

你可能感兴趣的:(python中yield用法和return的区别_爬虫:Scrapy 中 yield 和 return 的区别)