我有以下测试脚本,该脚本由于设计而失败。但是,pytype和mypy都没有警告我有关此问题的信息。为什么会这样?
import pandas as pd
import collections
def junkmerge(dfs: collections.abc.Sequence, *args, **kwargs) -> pd.DataFrame:
print(dfs)
return pd.concat(dfs, *args, **kwargs)
if __name__ == '__main__':
pd1 = pd.DataFrame(data={'a': [1]})
pd2 = pd.DataFrame(data={'a': [2]})
junkmerge(pd1, pd2, join='outer')
注意:我专门检查了数据帧不是序列。
In [6]: isinstance(pd1, collections.abc.Sequence)
Out[6]: False
In [10]: issubclass(pd.DataFrame, collections.abc.Sequence)
Out[10]: False
答案 0 :(得分:0)
mypy或pytype都不支持熊猫。因此,当将数据框作为函数参数传入时,两者都不执行检查。
在代码中删除了pandas依赖后,我能够从mypy和pytype都获取错误。
请参见下面复制的代码。
import collections
def junkmerge(dfs: collections.abc.Sequence[int], *args, **kwargs) -> pd.DataFrame:
print(dfs)
return
if __name__ == '__main__':
junkmerge(1, 2, join='outer')