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 = len
和 key=lambda x: len(x)
只是移除了 Pycharm 看到 return 类型的能力。但我建议不要这样做,因为它不会让你的代码更清晰,而且会减慢你的代码速度。
此外,您可以删除 = 周围的 space 并在 # 之前添加另一个 space 以使您的代码 PEP8 兼容。这会将行变成 str1.sort(key=len) # within the parenthesis is where the warning is issued
。如果您打开 PEP8 检查,这将防止将来弹出任何警告。
虽然我似乎写了一个非常简单的代码(只有 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 = len
和 key=lambda x: len(x)
只是移除了 Pycharm 看到 return 类型的能力。但我建议不要这样做,因为它不会让你的代码更清晰,而且会减慢你的代码速度。
此外,您可以删除 = 周围的 space 并在 # 之前添加另一个 space 以使您的代码 PEP8 兼容。这会将行变成 str1.sort(key=len) # within the parenthesis is where the warning is issued
。如果您打开 PEP8 检查,这将防止将来弹出任何警告。