如何解决如何处理 Python 代码的 MyPy 类型检查中的可选情况
我正在尝试使用 Python 3 类型提示,以使我的代码更简洁。每当我尝试通过 mypy 传递我的代码时,都会出现一些重复的错误,提到有关 Optional 数据类型的内容,我不知道为什么。
def directory_to_dataframe(directory_name: str) -> pandas.DataFrame:
'''
Get the contents of a directory as a single dataframe.
:param directory_name: The directory to read
'''
# print(directory_name)
directory: str = os.path.join(CONTAINER_ROOT,directory_name)
def read_method(parquet: str) -> pandas.DataFrame:
return pandas.read_parquet(path=os.path.join(directory,parquet))
if not os.path.isdir(s=directory):
return pandas.DataFrame()
files_to_read: Iterator[str] = filter(
lambda filename: filename.endswith('.parquet'),os.listdir(path=directory))
try:
return pandas.concat(objs=map(read_method,files_to_read),verify_integrity=True,ignore_index=True).fillna(value=0) # Mypy raises error
except ValueError:
return pandas.DataFrame()
Mypy 抱怨 Incompatible return value type (got "Optional[DataFrame]",expected "DataFrame")
我认为 pandas.concat()
将始终返回一个数据帧,所以我不明白为什么返回类型必须是 Optional(这意味着 None
返回的可能性)。
这是另一个类似的案例。
daily_count: pandas.DataFrame = pandas.DataFrame(data=daily_ids['ID'].value_counts()).reset_index()
Mypy 抱怨 expression has type "Optional[DataFrame]",variable has type "DataFrame"
所以我缺少一些关于何时将 Optional
应用于变量或函数返回类型以使 mypy 满意的信息。此外,如果我确实应用了 Optional
,那么在涉及该变量的任何进一步操作中,MyPy 会抱怨该操作对 None
类型无效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。