获取 python 省略号 (...) 类型,而无需将其定义为 `type(...)`

Get python ellipsis (...) type without having to define it as `type(...)`

有没有办法获取 python 的 Ellipsis 类型?我看到这样做 type(Ellipsis)type(...) returns <class 'ellipsis'>,但是通过写 x = ellipsis() 好像 ellipsis 不是默认定义的数据输入 (NameError: name 'ellipsis' is not defined).
我认为 builtins 内置模块可以解决我的问题,但以下也会引发错误。

import builtins
_ellipsis = builtins.ellipsis    # AttributeError: module 'builtins' has no attribute 'ellipsis'

我真正需要的是做这样的事情:

from typing import Union

def f(x: Union[str, type(...)]):
    pass

显然是以前的作品,但我想要一个更高级的解决方案 type(...)

根据the documentation

Ellipsis

The same as the ellipsis literal “...”. Special value used mostly in conjunction with extended slicing syntax for user-defined container data types. Ellipsis is the sole instance of the types.EllipsisType type.

因此,在 Python 3.10 (!) 中,您可以使用 types.EllipsisType 来表示此类型。

否则,您可以像这样定义自己的变量:

EllipsisType = type(...)

然后在类型声明中使用它

目前,您正在做的是实现它的唯一方法。

Python 3.10, it will be available in the types模块中。

3.10这里也加了NoneType,还有NotImplementedType.