Python中省略号的全面解析

在 Python 中,... 是一种特殊的字面值,称为 Ellipsis(省略号)。它在不同的场景中具有多种用途。

  1. 占位符: 对于许多开发人员,尤其是在开发的早期阶段,他们可能会使用 Ellipsis 作为代码中的一个占位符。这样可以让你在还没有编写具体实现的时候保持代码结构。

    1
    2
    3
    4
    5
    def my_function():
    ...

    class MyClass:
    ...

    在上面的例子中,... 被用作一个占位符,暗示着这些代码块将在未来被具体实现。

  2. 切片: 在 NumPy 等科学计算库中,省略号经常被用于高维数组的切片操作。通过使用 Ellipsis,你可以轻松地在多个维度上进行切片,而不必显式指定每一个维度。

    1
    2
    3
    4
    5
    6
    7
    import numpy as np

    # 创建一个 4 维数组
    a = np.random.rand(2, 2, 2, 2)

    # 使用省略号选择第一个维度的所有项,并且在其他维度上只选择第一项
    b = a[0, ..., 0]
  3. 类型提示: 在 Python 的类型提示中,也可以使用 Ellipsis。当你想表示一个类型但不想现在具体指定它时,你可以使用 Ellipsis 作为一个暂时的替代。

    1
    2
    3
    4
    5
    from typing import Any, Tuple

    # 这个类型提示表示这个函数接收任意数量和类型的参数,并且返回任意类型的值
    def my_function(*args: Tuple[Any, ...]) -> ...:
    return args
  4. 自定义用途: 你还可以根据需要,在自己的代码中以特定方式使用 Ellipsis。例如,你可以用它来表示某些配置选项的默认值,或者作为特殊的标记。

请注意,Ellipsis 在 Python 中是一个内置的常量,你可以通过 ... 或者 Ellipsis 来引用它。它们是等价的。

1
2
3
4
5
print(Ellipsis)
# 输出: Ellipsis

print(... is Ellipsis)
# 输出: True