Type Comments[类型注解]
注释是在Python 3中引入的,并且它们没有被反向移植到Python 2.这意味着如果您正在编写需要支持旧版Python的代码,则无法使用注释。
要向函数添加类型注释,您可以执行以下操作:
import math
def circumference(radius):
# type: (float) -> float
return 2 * math.pi * radius
类型注释只是注释,所以它们可以用在任何版本的Python中。
类型注释由类型检查器直接处理,所以不存在__annotations__字典对象中:
>>> circumference.__annotations__{}
类型注释必须以type: 字面量开头,并与函数定义位于同一行或下一行。如果您想用几个参数来注释一个函数,您可以用逗号分隔每个类型:
def headline(text, width=80, fill_char="-"):
# type: (str, int, str) -> str
return f" {text.title()} ".center(width, fill_char)
print(headline("type comments work", width=40))
您还可以使用自己的注释在单独的行上编写每个参数:
# headlines.py
def headline(
text, # type: str
width=80, # type: int
fill_char="-", # type: str
): # type: (...) -> str
return f" {text.title()} ".center(width, fill_char)
print(headline("type comments work", width=40))
通过Python和Mypy运行示例:
$ python headlines.py
---------- Type Comments Work ----------
$ mypy headline.py
$
如果传入一个字符串width=”full”,再次运行mypy会出现一下错误。
$ mypy headline.py
headline.py:10: error: Argument "width" to "headline" has incompatible
type "str"; expected "int"
您还可以向变量添加类型注释。这与您向参数添加类型注释的方式类似:
pi = 3.142 # type: float
上面的例子可以检测出pi是float类型。