Python 3.x 鼠标光标指向方法或函数时的python 3.8上下文帮助

Python 3.x 鼠标光标指向方法或函数时的python 3.8上下文帮助,python-3.x,pycharm,Python 3.x,Pycharm,当我在Pycharm中使用鼠标将光标移动到方法上时,会显示非常详细的上下文帮助。有人能解释一下如何理解/阅读这个例子吗? 下面我将光标移到“排序”方法上,我相信它是内置函数 builtins @overload def sorted(__iterable: Iterable[_T], *, key: (_T) -> _SupportsLessThan, reverse: bool = ...) -> List[_T]

当我在Pycharm中使用鼠标将光标移动到方法上时,会显示非常详细的上下文帮助。有人能解释一下如何理解/阅读这个例子吗? 下面我将光标移到“排序”方法上,我相信它是内置函数

builtins 
@overload
def sorted(__iterable: Iterable[_T],
           *,
           key: (_T) -> _SupportsLessThan,
           reverse: bool = ...) -> List[_T]
Possible types:
• (__iterable: Iterable[_LT], Any, key: None, reverse: bool) -> List[_LT]
• (__iterable: Iterable[_T], Any, key: (_T) -> _SupportsLessThan, reverse: bool) -> List[_T]
Return a new list containing all items from the iterable in ascending order.

例如,_T,->,_LT,反向:。。。。这些东西是什么意思?

让我们来分解函数签名。此函数接收3个参数。第一个参数的名称是
\uu iterable
,后面跟着
:iterable[\u T]
。这个语法是用来指定的,它是可选的,不是python真正强制的。但是,这些类型化注释非常有用,可以使用以下工具进行检查:例如

在参数名称后面的
之后,您将获得该参数的类型。它可以是一种特定类型,如
int
str
YourClass
等。。但我们通常需要更多的灵活性。例如,函数通常可以接受我们可以迭代的任何内容,而不是将类型限制为仅
list
。要指定此类型,输入模块提供了几个选项。在这种情况下,将使用
Iterable
。这是一个“泛型类型”,因为其中的实际元素也有一个类型。这里的
\u T
只是一个占位符。通过在
key
参数中使用
\u T
,您可以说
key
的类型与通过迭代
\u iterable
返回的类型相关

key:(\u T)->\u SupportsLessThan
中的语法一开始可能很奇怪,但它的意思是
key
是一个函数(括号是这里的线索),该函数接收一个类型为
\u T
的参数。也就是说,此函数接收的类型与您在迭代
\uuu iterable
时得到的类型相同。
->\u supportsLessThor
部分指定此函数的返回类型。它所说的是,该函数返回的任何内容的类型都必须支持与
p代码->列表[\u T]
指定
排序的
函数的返回类型。再次注意
\u T
的用法。最后,通过阅读签名,而不看执行该签名的函数的源代码,您可以确切地知道它作为参数需要什么,也可以确切地知道它返回什么。

您可以得到可能函数的签名和简短的描述
\T
是您的数据类型(因为
key
必须与同一时间兼容。您可能会在中看到有关Python键入批注的文档,但这是一个高级主题,键入批注是可选的,没有问题。如果您认为这完全回答了您的问题,则接受答案。除非您认为您的问题没有得到完全回答。在这种情况下你可以在这里发表评论,让我添加额外的信息,或者让其他人写另一个答案。