这个函数声明中 -> List[int] 是啥意思? [复制]

Posted

技术标签:

【中文标题】这个函数声明中 -> List[int] 是啥意思? [复制]【英文标题】:What is the meaning of -> List[int] in this function declaration? [duplicate]这个函数声明中 -> List[int] 是什么意思? [复制] 【发布时间】:2019-10-23 15:38:15 【问题描述】:

想看懂这个函数的声明:->List[int]:

我已经学习了 Python 的基础知识,以前从未见过这样的函数声明

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:

【问题讨论】:

python.org/dev/peps/pep-3107/#id32 【参考方案1】:

这是一个所谓的“类型提示”(或“函数注释”;这些从 Python 3.0 开始可用)。

-> List[int] 表示函数应该返回一个整数列表。 nums: List[int], target: int 表示 nums 应为整数列表,target 应为整数。

不过,这不是硬性要求,也就是说,您仍然可以使用为这些参数传递的不同类型的对象调用函数,并且该函数还可以返回与整数列表不同的东西(与 Java 等其他语言不同,提供错误的类型会导致编译错误)。换句话说:类型提示与程序执行无关,它们在运行时被忽略(忽略类型提示只是默认行为,但它们在运行时通过__annotations__ 可用,所以你可以 和他们做点什么)。

类型提示可以表达作者的意图,并且可以在程序执行之前通过mypy 等工具进行检查(例如,这些可以检查一个函数是否仅使用正确类型的参数调用并返回正确类型的内容) .

请注意,List 在标准命名空间中不可用(与 list 不同),但(至少在 Python 3.9 之前)需要从 typing 导入,这也是

为标准类型提供其他类型,如SetDictTupleCallable等。 允许定义自己的类型 提供其他类型的类型化版本,例如 NamedTuple 而不是 namedtuple

从 Python 3.9 开始,也可以使用标准的 list 构造函数作为类型提示,请参阅 here。

【讨论】:

我是新手,这是一个深入的解释。谢谢,我很感激【参考方案2】:

这是 3.5 版的新功能。您可以查看文档。https://docs.python.org/3.5/library/typing.html

【讨论】:

以上是关于这个函数声明中 -> List[int] 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

go 学习之函数

返回数组指针

List,tuple和array的区别

第三章练习20170909

声明那回事儿

一个指向指针函数的函数指针