作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在代码中运行 mypy 0710
版本时遇到错误。我制作了一个存在问题的小代码片段,但不确定为什么会出现此错误
a = None
version = 2
if version == 2:
a = 10
#print("asdfgh")
if float(a) == 10:
print("erty")
当我在 mypy 中运行代码时出现错误
tests/test.py:8: 错误:“float”的参数 1 具有不兼容的类型“Optional[int]”;预期“Union[SupportsFloat、str、bytes、bytearray]”
任何帮助将不胜感激
最佳答案
这里的问题是 mypy 不明白你的 version
变量总是恰好是 2,因此不明白你的第一个 if 语句总是 运行。
如果第一个 if 语句仅有时运行,则意味着 a
有时永远不会被分配值 10,并将保持 None。这可能会导致稍后出现类型错误:float(None)
无效。
最简单的修复方法是删除不必要的 if-check:
a = None
version = 2
a = 10
if float(a) == 10:
print("erty")
...或者添加一个“else”情况,如果 version
不等于 2,则将 a
设置为其他值:
a = None
version = 2
if version == 2:
a = 10
else:
a = 99
if float(a) == 10:
print("erty")
...或者断言 a
将是 int 类型:
a = None
version = 2
if version == 2:
a = 10
assert isinstance(a, int)
if float(a) == 10:
print("erty")
我个人会推荐第一个解决方案的一些变体。
关于python - mypy 给出错误,类型不兼容 "Optional[int]";预期“Union[SupportsFloat、str、bytes、bytearray],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56494013/
我在代码中运行 mypy 0710 版本时遇到错误。我制作了一个存在问题的小代码片段,但不确定为什么会出现此错误 a = None version = 2 if version == 2: a
我是一名优秀的程序员,十分优秀!