Python 如何正确注释生成器以传递过梁,如Pycharm';s
我已经创建了一个生成器管道,这些生成器相互连接,并由脚本末尾的Python 如何正确注释生成器以传递过梁,如Pycharm';s,python,python-3.x,Python,Python 3.x,我已经创建了一个生成器管道,这些生成器相互连接,并由脚本末尾的csv.Dictwriter.writerows函数调用驱动。以下是管道: chunks = (gen_issue_chunk( j, start, jql, expand='changelog', fields=desired_fields) for start in start_at) issues = gen_is
csv.Dictwriter.writerows
函数调用驱动。以下是管道:
chunks = (gen_issue_chunk(
j,
start,
jql,
expand='changelog',
fields=desired_fields)
for start in start_at)
issues = gen_issues(chunks)
# A set to collect all issue ID's that need to be removed from the db.
to_delete = set()
rows = process_issues(issues, to_delete)
例如,在gen_issues
函数中,我的函数签名如下所示:
def gen_issues(chunks) -> Generator[resources.Issue, None, None]:
"""
:param chunks:
:return:
"""
for chunk in chunks:
yield from chunk
此生成器
类型是从键入
模块导入的。但是当这被传递到process\u issues
函数中时,当我尝试迭代这些问题时,我得到一个linter警告,提示应该是collections.Iterable
,而不是收到Generator[…]
。当一个函数需要一个生成器
,并且它说所需的签名是\uu生成器[any,any,None]
时,我在传入这种类型时也会收到警告
注释生成器的正确(最佳实践)方法是什么?据我所知,PyCharms类型检查器没有做错什么。看到类似的问题了(尽管我不认为这是我所能理解的愚弄)。最好与他们的问题追踪者核实一下。好的,这是有道理的,谢谢你澄清这一点!