竖线 "|"(管道)在函数参数类型注释中表示什么?

16

我遇到了这样一个函数签名:

def get_quantile(numbers: List[float], q: float | int ) -> float | int | None :

这是什么意思?

这是我在 Python 3.8 上遇到的语法错误。我需要从 future 中导入一些东西才能让它工作吗?


https://www.python.org/dev/peps/pep-0604/ - khelwood
2个回答

22
根据PEP 604,从Python 3.10开始将使用|表示联合类型。因此,float | int表示Union[float, int],即一个float或一个int。

3
这意味着“或”。因此,“q:float | int”表示“q”可以是“float”或“int”。

2
你确定注解中可以使用 or 吗?除了一些奇怪的类型和值计算之外。很抱歉攻击你的回答,但你让 or 看起来像是 Python 的关键字,这可能会误导某些人 ;) - Kroshka Kartoshka
1
它并不是真正的“或”,而更恰当地说是“联合”,这与该运算符在集合和字典中的用法一致。而且,or关键字不能在类型注释中使用。 - Victor Schröder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接