python - 使用产量时没有“打印”输出?
问题描述
我正在使用 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
?
解决方案
每当迭代生成器时,都会执行打印语句。如果您只想查看迭代器打印的内容,您可以在列表推导中调用它而不保存结果。
def testFunc(arg1):
print arg1
yield arg1
>>> [_ for _ in testFunc(1)]
1
[1]
推荐阅读
- javascript - 使用 react-markdown 解析 markdown 中的下标
- python - AttributeError:“NoneType”对象没有属性“关闭”Python
- python - 如何在python中更改整个控制台的颜色
- tensorflow - 物体检测 + LSTM
- c# - 为什么我的 Content 字段在我初始化变量并分配给 db 字段后返回 NULL
- html - CSS 滚动文本 - 删除延迟和格式化 div 高度或文本填充
- elasticsearch - 提示如何使用 Logstash 加速从 SQL Server 到 ElasticSearch Index 的数据流,仅给定 1 个工作人员
- swift - UICollectionView Swift中的对齐和两行水平滚动
- scala - 如何在 Akka-http 中动态设置请求大小限制
- jhipster - 使用 JHipster 的微前端架构