Python模块Typing.overload的使用

简介: Python模块Typing.overload的使用

环境:

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仅仅是给检查工具用的

参考

Python3标准库漫游之Typing.overload

            </div>
目录
相关文章
|
3月前
|
Python
Python 的其他主题:什么是 Duck Typing?Python 中如何使用 Duck Typing?
Python 的其他主题:什么是 Duck Typing?Python 中如何使用 Duck Typing?
|
Python
Python - typing 模块 —— TypeVar 泛型
Python - typing 模块 —— TypeVar 泛型
733 0
Python - typing 模块 —— TypeVar 泛型
|
4月前
|
存储 程序员 索引
python面向对象编程,什么是魔术方法(magic method),它们有什么作用?
python面向对象编程,什么是魔术方法(magic method),它们有什么作用?
|
Python
Python @classmethod和@staticmethod装饰器使用介绍
Python @classmethod和@staticmethod装饰器使用介绍
62 0
|
Java Python
Python模块Typing.overload的使用
Python模块Typing.overload的使用
88 0
|
Python
Python中hasattr的具体用法
hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。需要注意的是name要用引号括起来
83 0
|
IDE 开发工具 Python
Python - typing 模块 —— Optional
Python - typing 模块 —— Optional
815 0
|
Python
Python - typing 模块 —— Callable
Python - typing 模块 —— Callable
408 0
|
Python
Python - typing 模块 —— Any Type
Python - typing 模块 —— Any Type
146 0