[英]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.