【发布时间】:2019-10-23 15:38:15
【问题描述】:
想看懂这个函数的声明:->List[int]:
我已经学习了 Python 的基础知识,以前从未见过这样的函数声明
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
【问题讨论】:
标签: python-3.x
想看懂这个函数的声明:->List[int]:
我已经学习了 Python 的基础知识,以前从未见过这样的函数声明
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
【问题讨论】:
标签: python-3.x
这是一个所谓的“类型提示”(或“函数注释”;这些从 Python 3.0 开始可用)。
-> List[int] 表示函数应该返回一个整数列表。nums: List[int], target: int 表示 nums 应为整数列表,target 应为整数。不过,这不是硬性要求,也就是说,您仍然可以使用为这些参数传递的不同类型的对象调用函数,并且该函数还可以返回与整数列表不同的东西(与 Java 等其他语言不同,提供错误的类型会导致编译错误)。换句话说:类型提示与程序执行无关,它们在运行时被忽略(忽略类型提示只是默认行为,但它们在运行时通过__annotations__ 可用,所以你可以 和他们做点什么)。
类型提示可以表达作者的意图,并且可以在程序执行之前通过mypy 等工具进行检查(例如,这些可以检查一个函数是否仅使用正确类型的参数调用并返回正确类型的内容) .
请注意,List 在标准命名空间中不可用(与 list 不同),但(至少在 Python 3.9 之前)需要从 typing 导入,这也是
Set、Dict、Tuple、Callable等。NamedTuple 而不是 namedtuple
从 Python 3.9 开始,也可以使用标准的 list 构造函数作为类型提示,请参阅 here。
【讨论】:
这是 3.5 版的新功能。您可以查看文档。
https://docs.python.org/3.5/library/typing.html
【讨论】: