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 引入了一种在类型提示中使用省略号的新方法。