# 省略号(...)也被称为Ellipsis,它是一个特殊的对象,常见用于多维数组的切片操作
# (1)在方法参数中使用,作为任意参数的标志
def process_data(data: int, *args: ...) -> None:
print("Data:", data)
print("Additional arguments:", args)
# Data: 1
# Additional arguments: ('a', True, [1, 2, 3])
process_data(1, 'a', True, [1, 2, 3])
exit()
# (2)用作占位符,表示该部分代码尚未实现。
def func_a():
...
func_a()
# (3)在类型注解中,可以使用省略号来表示一个参数的类型是可变的。
def my_func(param: List[int, ...]) -> None:
pass
# (4)索引作用 指定同质类型的可变长度元组
# 省略号放在数组最后,作用相当于索引操作
import numpy as np
a = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
b = a[0, ...] # array([[1, 2, 3], [4, 5, 6]])
c = a[0] # array([[1, 2, 3], [4, 5, 6]])
print("a")
print(a)
print("b")
print(b)
print("c")
print(c)
exit()
# (5)切片操作
# 省略号放在数组最前面,作用相当于[::]
import numpy as np
a = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
b = a[..., 0] # array([[ 1, 4], [ 7, 10]]) 表示取前面所有维度的第0列
c = a[..., 1] # array([[ 2, 5], [ 8, 12]]) 表示取前面所有维度的第1列
print("a")
print(a)
print("b")
print(b)
print("c")
print(c)
"""
a
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
b
[[ 1 4]
[ 7 10]]
c
[[ 2 5]
[ 8 11]]
"""
exit()