Python模块Typing.overload的使用

2022-10-06 08:19:21

环境:
python 版本 3.5.6

两种方式都是用于类型检查
typing.TypeVar
typing.overload

代码实例

import typing

T= typing.TypeVar('T',str,int)deffoo(name: T)->str:return f"hello {name}"# 如果输入的类型不对,PyCharm中会提示:# Expected type 'T', got 'float' insteadprint(foo(23.0))
# -*- coding: utf-8 -*-import typing# 如果没有这个定义,参数传入字符串的时候会有提示
@typing.overloaddefget_page(page:str)->int:pass# 一定要定义一个没有装饰器的函数defget_page(page:int)->int:return pageprint(type(get_page('12')))<class'str'>

如果按照Java中函数重载的概念,传入str类型的参数,应该调用get_page(page: str)

测试发现解释器并没有调用被@typing.overload 装饰的函数,如果调用应该返回None(函数里什么也没返回)

overload仅仅是给检查工具用的

参考
Python3标准库漫游之Typing.overload

  • 作者:彭世瑜
  • 原文链接:https://pengshiyu.blog.csdn.net/article/details/105413836
    更新时间:2022-10-06 08:19:21