Python future模块和typing模块

类型注解是用于指明函数参数、返回值的数据类型,以提高代码的可读性和可维护性。


类型注解不会影响代码的运行,只是为第三方静态类型检查工具提供一种提示,提示函数接收什么类型的参数以及返回什么类型的参数。


Python是动态类型语言,变量和参数的类型不用提前声明,但是这在一定程度上降低了代码的可读性和增加了代码的调试难度。

future模块

"""
** future模块
future模块用于处理Python2和Python3之间的差异,通过future模块可以实现两种版本的迁移,
使用from __future__ import语句可以使Python2启用Python3的语法,反之依然。

** from __future__ import annotations语句
该语句用于在Python3.7及更早版本中启用类型注解,允许声明函数参数、返回值的类型。
在Python3.8及更高版本中,该语句不再是必要的,默认已启用该行为。如果编写代码用的Python3.8及更高的版本,而代码
可能在低版本的Python上运行,通过from __future__ import annotations来启用类型注解。
"""

from __future__ import annotations

def add(x: int, y: int = 6) -> int:   # x为参数,int表明x的类型为int类;-> int表明返回值类型为int类
    return x + y

typing模块

"""
typing模块提供了一些用于类型注解的特殊类型,并允许基于基本类型创建新的类型。
typing模块中的类型
Tuple:元组类型,声明元组中元素的种类
List:列表类型,声明列表中元素的种类
Dict:字典类型,声明键和值的种类
Set: 集合类型
Any: 任意类型
Union: 多个类型的联合
Callable: 可调用对象类型
"""

from typing import NewType, List, Tuple, Dict, Union

name: str = "Paul"                               # 基本类型直接注解
age: int = 16
ls: List[int] = [1, 2]                           # List只能接收一个参数
t: Tuple[int, float, str] = (1, 1.1, "Beijing")  # Tuple可以接收多个参数
d: Dict[str, int] = {"a": 1}

# 定义函数时注解参数、返回值的类型
def get_grade(name: str) -> Tuple[str, float]:
    grade = 95.6
    return (name, grade)

def get_rank(name: str) -> Dict[str, Union[float, int]]:
    grade = 95.6
    rank = 1
    return {name: (grade, rank)}

def get_name_list(cla: str) -> List[str]:
    return ['Tim', 'Bob']
    
# int、str等类型所代指的内容非常宽泛,当需要更具体描述一些变量时,可以创建新类型
# typing模块的NewType用于根据已有类型创建一个新的类型,新的类型只是已有类型的一个别名, \
# 两者在类型上是等效的,但是别名更具有描述性,看到别名就知道变量的特性。
StudentId = NewType('StudentId', int)  # 创建新类型StudentId

def get_info(id: StudentId) -> Dict[StudentId, str]:
    return {id: 'Tim'}

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值