[英]mypy cannot infer type of generator comprehension correctly
我正在使用data-science-types提供的存根文件让 mypy 能够检查我的 Pandas 相关代码。 可悲的是,我得到以下行为:
为了
import pandas as pd
def test() -> pd.DataFrame:
pass
pd.concat((test() for _ in range(10)))
mypy 报告test.py:6: error: Argument 1 to "concat" has incompatible type "Generator[DataFrame, None, None]"; expected "Union[Sequence[DataFrame], Mapping[str, DataFrame]]".
test.py:6: error: Argument 1 to "concat" has incompatible type "Generator[DataFrame, None, None]"; expected "Union[Sequence[DataFrame], Mapping[str, DataFrame]]".
如果我使用pd.concat([test() for _ in range(10)])
而不是 mypy 又高兴了。 有人可以向我解释那里发生了什么吗?
以防万一。 我正在使用 python3.8.5、pandas 1.1.2、mypy 0.782 和 data-science-types 0.2.18。
您将生成器与序列混淆了。 根据定义,序列是
通过
__getitem__()
特殊方法支持使用整数索引进行有效元素访问的可迭代对象,并定义了返回序列长度的__len__()
方法。
生成器既不支持,也不是一种映射,因此您不能将一个传递给pd.concat
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.