python - 为什么 Pycharm 在使用带有整数和 float 变量作为参数的 max 函数时给我一个警告

标签 python pycharm

我尝试将 max fuction 与几个 int vars 和几个 float vars 一起使用,我收到一条警告,指出 int 被认为是正确的类型,但程序运行良好。我做错什么了吗?

最佳答案

该问题可能是由您专门指定类型引入的——这可以在 Python 中完成,当然 PyCharm 也支持,但不是语言的一部分。
例如:

i: int = 1
a: float = 0.1
print(max(i, a))
这将在 a 上显示 PyCharm 警告在 print(max(i, a)) .
并且因为 PyCharm 可以推断类型,这将显示相​​同的警告:
i = 1
a = 0.1
print(max(i, a))
另一方面,这不会:
items = [1, 0.1]
print(max(items))
这样做的原因是 PyCharm 知道 max()如果传入不兼容的类型,Python 的内置函数将失败。例如,max(1, '2')会导致 TypeError在运行时。这就是为什么如果您传入多个不同类型的参数会收到警告,PyCharm 知道这可能会成为一个问题,并且会在第一个与前面参数类型不匹配的参数上发出警告。
这个列表没有给你同样的问题的原因是 PyCharm 只查看调用参数的类型(在这种情况下是一个列表),但没有 max() 的信息。函数当然会返回列表中元素的最大值 - 它无法从 max() 中确定这一点。函数是在库中定义的,尽管它对你我来说可能是显而易见的。
如果您知道这不是问题,则可以通过将参数包装在列表或元组等可迭代对象中、将整数转换为浮点数或明确忽略警告来避免该错误。或者通过查看您的代码并决定您是否真的应该比较整数和浮点数。
i: int = 1
a: float = 0.1
print(max([i, a]))
print(max(float(i), a))
# noinspection PyTypeChecker
print(max(i, a))
请注意,最终的“解决方案”将特定于 PyCharm,其余的应该在任何编辑器中都能为您提供良好的结果。

关于python - 为什么 Pycharm 在使用带有整数和 float 变量作为参数的 max 函数时给我一个警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63947025/

相关文章:

python - LinearDiscriminantAnalysis - .transform(X) 的单列输出

python - 我可以在 PyCharm 中执行 makemigrations 和 migrate 命令吗?

Python pygame 如何设置FPS

python - 两个不同编辑器中的相同种子给我不同的结果(Pycharm 和 Jupyter Notebook)

python - 使用 lambda 序列化 cython 类时出现 pickle 错误

python - 独立使用 Django ORM

python - 如何从html调用python程序

python - 如何定义带点的二维数组并分别限制 x 和 y

javascript - 如何从我的机器上提供 HTML + JS + CSS webapp 以便其他人可以查看它?

python - 如何使用Python在openCV中制作十字形内核以应用形态转换?