我尝试将 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/