pycharm 中的警告,带有 sort(key = len) 函数

warning in pycharm, with sort(key = len) function

虽然我似乎写了一个非常简单的代码(只有 3 行),但我的 Pycharm 发出了一个我不明白的警告。代码运行,但我想了解警告。提前致谢!

str1 = ['hello', 'there', 'graham', 'pushkin', 'fizzybubblech', 'ciao', 'meestersonuvabeech', 'russia'] # wrote this just to amuse myself

str1.sort(key = len) # within the parenthesis is where the warning is issued 

print(str1)

> #This is the warning i recieve. First questionn in overflow, so i just pasted the whole thing 
>Expected type 'Optional[(str) -> Any]' (matched
> generic type 'Optional[(_T) -> Any]'), got '(o: Sized) -> int' instead
> less... (Ctrl+F1)  Inspection info: This inspection detects type
> errors in function call expressions. Due to dynamic dispatch and duck
> typing, this is possible in a limited but useful number of cases.
> Types of function parameters can be specified in docstrings or in
> Python 3 function annotations.

我认为该错误是由于 pycharm 错误地认为 len 函数不能将 str 作为输入引起的——如 Alex Hall 所述。这不是您的错误,您只需等到 pycharm 修复错误。

如果你真的不想看到那个讨厌的错误消息,你可以更换 key = lenkey=lambda x: len(x) 只是移除了 Pycharm 看到 return 类型的能力。但我建议不要这样做,因为它不会让你的代码更清晰,而且会减慢你的代码速度。

此外,您可以删除 = 周围的 space 并在 # 之前添加另一个 space 以使您的代码 PEP8 兼容。这会将行变成 str1.sort(key=len) # within the parenthesis is where the warning is issued。如果您打开 PEP8 检查,这将防止将来弹出任何警告。