Python中的Ellipsis对象

作为一个经验丰富的Python开发者,你可能已经遇到了Python中的三点... 省略号对象。如果你试图在 Python 解释器中打印这个东西,它将显示一个省略号。

本教程将演示省略号对象在 Python 中的使用。

使用省略号作为非书面代码的占位符

省略号对象可以以不同的方式使用。它主要充当未写代码的占位符。

假设我们在一个团队中工作,需要定义函数和类。我们定义了函数和类,但对代码不确定,所以我们把三个点(省略号)放在原处。

这将防止 Python 解释器引发任何异常。

请看下面的代码。

def fun():
    ...
print("Use of ellipsis.")

输出:

Use of ellipsis.

上面的例子表明,我们将省略号对象作为占位符放在fun() 方法中的未写代码。

使用Ellipsis来替代pass 关键字

在Python中,当我们想添加一行代码但不希望执行任何东西时,就会使用pass 这个关键字。由于这个原因,它被用来作为未写代码的占位符。

正如所讨论的,我们可以用省略号对象作为未写代码的占位符;因此,我们可以用它来替代pass 关键字。

我们可以在下面的例子中看到这一点。

def fun1():
    ...
def fun2():
    pass
print("Use of ellipsis.")

输出:

Use of ellipsis.

上面的例子显示,两个函数都使用了pass 和 ellipsis 作为未写代码的占位符,证明我们可以用ellipsis 对象来替换pass

在切分多维numpy 阵列中使用Ellipsis

这个对象的另一个重要用途是在切片中。

切片是指根据元素的索引从一个对象中提取部分元素的技术。它是在方括号中进行的。

我们也可以对多维数组进行切片,但是我们需要注意数组的总尺寸。省略号可以作为切片表达式的占位符,以忽略给定的维度。

考虑一下下面的代码。

import numpy as np
arr = np.array([[7,5,2,3],[1,8,9,2],[3,2,1,0]])
print(arr[ :,2])
print(arr[...,2])

输出:

[2 9 1]
[2 9 1]

在上面的例子中,注意不同的切片表达式是如何返回相同的结果的。省略号作为切片表达式中的占位符是非常有用的。

表达式arr[...,2] ,对于二维数组可以转化为arr[ : ,2] ,对于三维数组可以转化为arr[ :, : , 2] ,以此类推。

使用省略号进行类型提示

在Python 3.5及以上版本中,引入了这个单子对象的另一个用途。

类型提示允许我们声明变量、参数和返回值的类型。我们可以在类型提示中使用省略号,只提供类型的一部分。

我们可以像Tuple[int, ...],Callable[...,int], 等一样使用它来帮助类型提示。

结语

最后,我们讨论了 Python 中的省略号对象和它的用途。它通常被用作函数和类中未写的代码的占位符。

我们也可以在切片中使用它作为占位符来忽略多个维度。Python 3.5 引入了一种在类型提示中使用省略号的新方法。