Python 从子函数发出请求

Python 从子函数发出请求,python,scrapy,generator,Python,Scrapy,Generator,如果我从某个子函数发出请求,则会出现以下错误: ERROR: Spider must return Request, BaseItem, dict or None, got 'generator' 示例代码: def parse(self): yield self.subfunc(link) def subfunc(self): yield scrapy.Request(link) 我认为这与发电机的工作方式有关,但我对它们并不十分熟悉。有快速解决办法吗?我想使用子函数稍微

如果我从某个子函数发出请求,则会出现以下错误:

ERROR: Spider must return Request, BaseItem, dict or None, got 'generator'
示例代码:

def parse(self):
    yield self.subfunc(link)

def subfunc(self):
    yield scrapy.Request(link)
我认为这与发电机的工作方式有关,但我对它们并不十分熟悉。有快速解决办法吗?我想使用子函数稍微组织一下代码。
我自己写的是一个
csv
,因此我不需要生成项目或指令您的代码生成生成器,您希望从该生成器生成请求。
最好的方法可能是使用
获得的收益:

def parse(self):
    yield from self.subfunc(link)
编辑:

因为在python 3.3中,
yield from
语法是新的,所以在旧版本中,您必须循环生成器生成的值:

def parse(self):
    for request in self.subfunc(link):
        yield request

您的代码生成生成器,您希望从该生成器生成请求。
最好的方法可能是使用
获得的收益:

def parse(self):
    yield from self.subfunc(link)
编辑:

因为在python 3.3中,
yield from
语法是新的,所以在旧版本中,您必须循环生成器生成的值:

def parse(self):
    for request in self.subfunc(link):
        yield request

谢谢你,斯特拉克。但是我的编译器说这种语法不支持<3.3。在子生成器上使用显式迭代。(我使用2.7是因为我需要一些LIB)再次感谢。这是一个巨大的帮助,我的python仍然在堆栈上花了很长时间才能找到答案!都是关于的
…谢谢你。但是我的编译器说这种语法不支持<3.3。在子生成器上使用显式迭代。(我使用2.7是因为我需要一些LIB)再次感谢。这是一个巨大的帮助,我的python仍然在堆栈上花了很长时间才能找到答案!都是关于
中的
。。。