环境:
python 版本 3.5.6
两种方式都是用于类型检查
typing.TypeVar
typing.overload
代码实例
import typing T = typing.TypeVar('T', str, int) def foo(name: T) -> str: return f"hello {name}" # 如果输入的类型不对,PyCharm中会提示: # Expected type 'T', got 'float' instead print(foo(23.0))
# -*- coding: utf-8 -*- import typing # 如果没有这个定义,参数传入字符串的时候会有提示 @typing.overload def get_page(page: str) -> int: pass # 一定要定义一个没有装饰器的函数 def get_page(page: int) -> int: return page print(type(get_page('12'))) <class 'str'>
如果按照Java中函数重载的概念,传入str类型的参数,应该调用get_page(page: str)
测试发现解释器并没有调用被 @typing.overload
装饰的函数,如果调用应该返回None(函数里什么也没返回)
overload仅仅是给检查工具用的