python - Python 打字 - 为什么我可以将一个可选的 Pandas DataFrame 分配给一个非可选的 Pandas DataFrame
问题描述
为什么以下代码不会引发 mypy 错误?
from typing import Optional
import pandas as pd
data = {'col1': [1, 2], 'col2': [3, 4]}
optional_df: Optional[pd.DataFrame] = pd.DataFrame(data=data)
df: pd.DataFrame = optional_df
在同一个文件中,我有这段代码:
optional_string: Optional[str] = "baz"
string: str = optional_string
错误:
foo.py:11: error: Incompatible types in assignment (expression has type "Optional[str]", variable has type "str")
Found 1 error in 1 file (checked 109 source files)
我正在像这样启动 mypy:
mypy --config-file ../quality_checks/mypy.ini .
我的配置文件如下所示:
[mypy]
python_version = 3.7
strict = True
[mypy-pandas]
ignore_missing_imports = True
我认为 ignore_missing_imports 可能是这里的问题,但我不确定这是否是真的或者为什么它是真的。
解决方案
pandas 没有(但是,虽然这可能会在不久之后改变)暴露类型提示 - 如果你运行
import pandas as pd
df: pd.DataFrame
reveal_type(df)
那么你应该看到它是 revelead as Any
,这意味着它不会被类型检查。
推荐阅读
- python - 即使在推送新部署之后,Heroku 也会运行旧部署
- node.js - 使用 nodejs sdk 3.0 模拟 couchbase
- python - 未分配 Pandas Dataframe 切片填充值(不工作)
- unit-testing - 协程测试失败并显示“此作业尚未完成”
- django - 使用 Djangorestframework-simplejwt 的多个自定义用户模型身份验证
- angular - 未设置编辑表单中的枚举值
- flutter - 基于渐变色点的子小部件装饰颜色 - 颤动?
- python - AttributeError:“DataFrame”对象没有属性“get_dtype_counts”
- pdf - slate3k WARNING:pdfminer.layout:Too many box (106) to group, skipping
- html - 使用 HTML/CSS 的可扩展语言选择