首页 > 解决方案 > 使用产量时没有“打印”输出?

问题描述

我正在使用 scrapy 框架实现一个网络爬虫。为了实现管道,yield在解析来自刮板的响应时是必要的。在我看来,yield在函数末尾使用时,print语句的所有输出都被抑制并被生成器对象替换。

def testFunc(arg1):
    print arg1
    yield arg1

testFunc('This does not print.')

结果是:

In [7]: testFunc('Will this print?')
Out[7]: <generator object testFunc at 0x10d636d20>

简单地评论yield恢复print呼叫:

def testFunc(arg1):
    print arg1

结果是:

In [10]: testFunc('Will this print?')
Will this print?

使用时如何保持print输出yield

标签: python

解决方案


每当迭代生成器时,都会执行打印语句。如果您只想查看迭代器打印的内容,您可以在列表推导中调用它而不保存结果。

def testFunc(arg1):
    print arg1
    yield arg1

>>> [_ for _ in testFunc(1)]
1
[1]

推荐阅读