python冒号有多少用法?冒号除了切片能怎么用?参数列表里的冒号是什么意思?Pyhon冒号在括号里?Python括号里加:冒号是什么意思?参数列表里加:冒号?def (context : Context)的冒号是什么意思?

今天群里有位群友问了这样一个问题:

python 方法参数中带冒号 python的冒号有什么用_python


python 方法参数中带冒号 python的冒号有什么用_python_02

正想回答这位群友,却突然发现自己不知道这个‘:’的官方叫法。

查阅过Python文档之后,得到了答案:

python 方法参数中带冒号 python的冒号有什么用_python_03


在这里简单记录一下:

这个冒号的用法: Type Hints
是Python 3.5/ PEP 484才加入的新特性;
国内通常叫做类型提示。

python 方法参数中带冒号 python的冒号有什么用_编程语言_04


如图,就是一个简单的例子。str标注的是形参数据类型,-> str 提示的是返回值数据类型。

python 方法参数中带冒号 python的冒号有什么用_大数据_05

目的如下:

此PEP旨在为类型注释提供标准语法,为Python代码提供更容易的静态分析和重构、潜在的运行时类型检查,以及(可能在某些上下文中)利用类型信息生成代码。

非目的:

还应该强调的是,Python仍然是一种动态类型语言,而且即使按照惯例,作者也不希望强制使用类型提示。

注:话里话外的意思是,编译器并不会针对这个:专门进行优化,也就是不会因为这个冒号就变成了强数据类型,传入数据类型不是提示类型的时候也不会针对性的报错。

简单来说,对于初学者,当作注释看就行了。

如果您有扎实的基础,根据官方文档的提示,可以使用get_type_hints()和一些第三方模块来实现一些有创造力的想法。