【问题标题】:mypy error when mapping a list of values to float将值列表映射到浮点数时出现mypy错误
【发布时间】:2022-01-09 18:03:06
【问题描述】:

我正在尝试使用 mypy 评估以下语句:

a = [1,2,3]

b = map(float, a)

这会返回错误

Argument 1 to "map" has incompatible type "Type[float]"; expected "Callable[[str], str]"

但在运行时执行没有问题。这个问题的原因是什么?

【问题讨论】:

  • 你的python版本是多少?我在 2.7 和 3.9 中运行过它并且它正在工作

标签: python type-hinting mypy


【解决方案1】:

我也无法复制它(Python 版本 3.9.0、mypy 版本 0.910),所以首先要尝试升级到最新版本。

不是完全相同的问题,但是mypy github上的这些问题可能是一个有趣的参考:

https://github.com/python/mypy/issues/6697(打开)
https://github.com/python/mypy/issues/1855(关闭)

基于这些,看起来以下内容可能会通过而不会出现 mypy 错误:

b = map(lambda x: float(x), a)

【讨论】:

    【解决方案2】:
    a = [1,2,3]
    
    b = map(lambda x: float(x), a)
    

    【讨论】:

      【解决方案3】:

      问题与对结果变量和 map 应用到的变量使用相同的名称有关,我正在做一些类似的事情

      a = b.split()
      a = list(map(lambda x: float(x),a))
      

      导致错误。在此处更改最后一行中的变量名称解决了此问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-14
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多