在Python中,是否可以将函数参数的类型限制为两种可能的类型?

2024-10-02 00:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试将“parameter”类型限制为int或list,如下面的函数“f”。但是,Pycharm在f行(“weewfwef”)没有显示关于错误参数类型的警告,这意味着(参数:[int,list])不正确

在Python中,是否可以将Python函数参数的类型限制为两种可能的类型

def f(parameter : [int, list]):
    if len(str(parameter)) <= 3:
        return 3
    else:
        return [1]

if __name__ == '__main__':
    f("weewfwef")


Tags: 函数警告类型参数lenreturnifparameter
3条回答

在python中,没有这样严格的类型检查,这就是为什么它遵循duck类型https://realpython.com/lessons/duck-typing/

def f(parameter : [int, list]):
    if not(type(parameter) in [list, int]):
        raise ValueError("Invalid Input type")
    if len(str(parameter)) <= 3:
        return 3
    else:
        return [1]

你要找的术语是union type

from typing import Union

def f(parameter: Union[int, list]):
  ...

Union不限于两种类型。如果有一个值是几种已知类型中的一种,但不一定知道是哪种类型,那么可以使用Union[...]来封装该信息

试试typing.Union

from typing import Union
def f(parameter : Union[int,list]):
    if len(str(parameter)) <= 3:
        return 3
    else:
        return [1]

相关问题 更多 >

    热门问题