首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复lsp-pyright类型提示错误;"int“与"float”不兼容?

如何修复lsp-pyright类型提示错误;"int“与"float”不兼容?
EN

Stack Overflow用户
提问于 2022-09-06 06:40:00
回答 1查看 172关注 0票数 0

使用下面的python示例片段,我得到了底部的错误

代码语言:javascript
复制
from typing import List
def foo(x:List[float]):
    pass

i=[3]
foo(i)

代码语言:javascript
复制
[Pyright] Argument of type "list[int]" cannot be assigned to parameter "x" of type "List[float]" in function "foo"
  TypeVar "_T@list" is invariant
    "int" is incompatible with "float" (5:4)

lsp-pyright: 20220614.1545

佩普484明确指出:

这个PEP没有要求用户编写导入数字,然后使用numbers.Float等,而是提出了一个几乎同样有效的简单快捷方式:在对参数进行注释时,将参数注释为具有类型( int )类型的参数(类型为**int是可接受的);类似地,对于注释为具有类型复杂的参数,类型浮点或int类型的参数是可以接受的。

EN

回答 1

Stack Overflow用户

发布于 2022-09-06 06:43:08

3是整数字面值。虽然Python通常会透明地从整数转换为浮点数(如果需要的话),但由于您将代码键入为float,所以打字机需要一个浮点数。

只需使用浮点文字:3.0,或只使用3. (但它的可读性有点差)。

PEP 484 Type提示明确指出:

您可以随时向pyright报告这个问题,可能会链接到/跟进第260期

但是,请注意,这里没有将参数注释为具有float类型,而是将其注释为具有List[float]类型,这与此情况不完全相同(参见PEP 484的方差部分)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73617688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档