str 序列的键入提示

问题描述 投票:0回答:1

我有一个功能:

def f(a: Sequence[str], b: Sequence[str]) -> List[str]:   
    return list(set(a) - set(b))
a = ['a', 'b', 'c']
b = ['b', 'c']
f(a, b)

但是这个函数不仅适用于

str
类型,还适用于其他可以比较的类型(int、float等)。在这种情况下,如何为
a
b
参数设置类型提示?

python python-typing
1个回答
1
投票

如果您不确定,您应该使用

Any
类型

from typing import Any
def f(a: Sequence[Any], b: Sequence[Any]) -> List[Any]:   
    return list(set(a) - set(b))
a = ['a', 'b', 'c']
b = ['b', 'c']
f(a, b)

如果你想让它只适用于这三种类型(int、float、str),你应该使用 Union:

from typing import Union
def f(a: Sequence[Union[str, int, float]], b: Sequence[Union[str, int, float]]) -> List[Union[str, int, float]]:   
    return list(set(a) - set(b))
a = ['a', 'b', 'c']
b = ['b', 'c']
f(a, b)

从python 3.10开始联合类型可以省略,你可以直接这样写:

a: Sequence[str|int|float]
© www.soinside.com 2019 - 2024. All rights reserved.