python的annotation介绍

python的annotation介绍

Python是一种动态类型语言,使用变量之前不需要声明其类型,直接赋值即可创建变量,变量初始类型取决于等号右侧表达式的值的类型。创建之后,变量的类型可以随时发生变化,但在任何时刻,每个变量都有确定的类型。在定义函数和类的方法时,也不需要声明形参类型,完全取决于实参类型。

当Python用于大型项目时候,没有类型这个Python的特征的弱点就暴露出来,使调试变得困难,虽然Python不支持类型声明,但是有一可用折中方案——标注(annotation:标注, 注解),也称为类型提示(type hint),从python3.5开始引入,用以明确形参类型,但不是强制要求,并不影响Python解释器执行 Python 代码指令的结果。

标注(Annotation)是与变量(variable)、类属性(class attribute)、函数参数或返回值相关联的标签(label),被约定作为 类型提示(type hint) 来使用。

局部变量(local variables)的Annotation在运行时无法访问,但全局变量、类属性和函数的Annotation分别存储在模块、类和函数的__annotations__特殊属性(special attribute)中。

官方介绍https://docs.python.org/zh-cn/3/glossary.html#term-annotation

常见的用于标注(annotation)的数据类型

int、long、float: 整型,长整形,浮点型

str:字符串类型

bool: 布尔型

List、 Tuple、Dic、Set:列表、元组、字典、集合

Iterable、Iterator:可迭代类型、迭代器类型

Generator:生成器类型

Sequence:序列

一般规则是参数名后跟一个冒号,后跟类型;函数返回值的形式是 -> 类型

接受并返回一个字符串的函数,一般写法:

def hi(name):
    return 'Hello ' + name

print(hi('wang')) #输出:Hello wang

添加标注(annotation)的写法:

def hi(name: str) -> str:
    return 'Hello ' + name

print(hi('wang')) #输出:Hello wang

这有什么用?

mypy 是 Python 中的静态类型检查器。写完带有类型提示的代码之后,可以使用mypy来检查下你的代码,如果有错误,会提示你。

关于mypy,可见 https://blog.csdn.net/somenzz/article/details/121551037

对python的标注进一步了解,可见

详解Python中函数和模块的特殊属性__annotations__ https://cloud.tencent.com/developer/article/1607611

你可能感兴趣的:(Python学习,python,开发语言)