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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python的注解(annotation)是一种用于标注函数参数和返回值类型的方法。从Python 3.5开始引入,它可以在代码中明确指定形参的类型,但并不强制要求,也不会影响Python解释器执行代码的结果。注解可以通过两种方式进行标注:一种是在函数定义的行后面使用注释,另一种是在函数定义的行间使用注释。\[1\]\[2\]在注解中,可以使用类型提示来明确参数的类型,例如使用int表示整数类型,float表示浮点数类型等。注解的类型信息可以通过访问函数的__annotations__属性来获取。\[3\]通过使用注解,可以提高代码的可读性和可维护性,特别是在大型项目中。 #### 引用[.reference_title] - *1* [pythonannotation介绍](https://blog.csdn.net/cnds123/article/details/129885822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python 中的注释(annotations)](https://blog.csdn.net/u011699626/article/details/108470770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值