前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础-类型注解Type Hints

Python基础-类型注解Type Hints

作者头像
上海-悠悠
发布2023-09-21 08:13:08
3630
发布2023-09-21 08:13:08
举报
文章被收录于专栏:从零开始学自动化测试

很多时候我们可能不清楚函数参数类型或者返回值类型,很有可能导致一些类型没有指定方法,当代码量很多在写完代码一段时间后, 很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果。就不得不去阅读代码的具体内容,降低了阅读的速度,typing模块可以很好的解决这个问题。

自python3.5开始,PEP484为python引入了类型注解(type hints),typing的主要作用有:

  1. 类型检查,防止运行时出现参数、返回值类型不符。
  2. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型。
  3. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒。 pycharm支持typing检查错误时会出现黄色警告。

简单来说,Type Hints有2个作用: 1.让编辑器识别,编辑器能智能提示相关语法,语法错误时有黄色告警。 2.方便其他python开发人员阅读代码,知道每个参数的类型,函数、方法返回值类型。

基础类型 int 和 str

变量赋值时也可以用类型注解

代码语言:javascript
复制
x = 1  y = "hello"  # 类型注解  x1: int = 11  y2: str = "world"  print(x1)  
print(y2)

如果仅仅只是声明了类型,没赋值

代码语言:javascript
复制
y3: str  
print(y3)

运行会报错:NameError: name 'y3' is not defined

当我们定义一个函数, 声明参数和返回值都是int类型

代码语言:javascript
复制
def add_int(a: int, b: int) -> str:  
    return f"{a}-{b}"  r = add_int(2, 'hello')  
print(r)

类型注解就是在参数后面通过冒号的方式加入了类型的说明, 代码简单解释:

  • a: int: 指定了输入参数 a 为 int 类型
  • b: int: 指定了输入参数 b为 int 类型
  • -> str: 指定了 函数的返回值为 srt 类型

当参数b传了一个字符串参数,会出现黄牌警告

但非常重要的一点是,pycharm只是提出了警告,但实际上运行是不会报错。这其实是python这种语言在工程实践中的一种非常优雅的处理方式 新的功能(Type Hints)不会影响原来的代码(如果变为强制报错,那原来写的代码就都不能运行了) 即使不适用新的功能(Type Hints)代码也可以正常运行

简单复合类型 list、tuple

以下示例:

  • x: list: 指定了输入参数 x 为 list 类型
  • y: str: 指定了输入参数 y 为 str 类型
  • `-> list: 指定了 函数的返回值为 list 类型
代码语言:javascript
复制
def demo2(x: list, y: str) -> list:  
    x.append(y)  
    return x

当x传参不是list类型时,会直接有黄色警告提示参数类型不正确,这样可以避免传入错误的参数类型,导致代码错误。

声明x变量为list类型,还有个好处,在函数内部写代码时,可以让编辑器快速智能提示list 对象对应的方法

tuple 和 list 差不多就不介绍了。

简单复合类型 dict

dict 类型示例

代码语言:javascript
复制
def demo3(a: dict, address: str) -> dict:  
    a.update(address=address)  
    return a  


r = demo3({"name": "yoyo"}, "上海市")  
print(r)

其它更多类型,可以看typing模块

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-18 13:32,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础类型 int 和 str
  • 简单复合类型 list、tuple
  • 简单复合类型 dict
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档