我有一个功能:
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
参数设置类型提示?
如果您不确定,您应该使用
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]