📜  Python3 中的三点(…)或省略号是什么

📅  最后修改于: 2022-05-13 01:54:35.293000             🧑  作者: Mango

Python3 中的三点(…)或省略号是什么

省略号是一个Python对象。它没有方法。它是一个单例对象,即提供对单个实例的轻松访问。

省略号 (…) 的各种用例:

  • Python解释器中的默认辅助提示。
  • 访问和切片多维数组/NumPy 索引。
  • 在类型提示中。
  • 用作函数内部的 Pass 语句。

Python解释器中的默认辅助提示

省略号 […] 用作Python解释器中的默认辅助提示符,在多行构造期间可以看到

例子:

访问和切片多维数组/NumPy 索引

  • 访问:允许访问指定范围的元素,只需省略序列索引。
  • 切片:Ellipsis的重要用途是切片高维数据结构。

例子:

假设,我们有一个 2x2x2x2 阶的 4 维矩阵。要选择第 4 维中的所有第一行元素(在行主要结构的情况下),我们可以简单地使用省略号表示法

Python3
# importing numpy
import numpy as np
  
array = np.random.rand(2, 2, 2, 2)
print(array[..., 0])
print(array[Ellipsis, 0])


Python3
from typing import Callable
  
def inject(get_next_item: Callable[..., str]) -> None:
            ...
# Argument type is assumed as type: Any
def foo(x: ...) -> None:
              ...


Python3
class flow:
    
    # (using "value: Any" to allow arbitrary types)
    def __understand__(self, name: str, value: ...) -> None: ...


Python3
# style1
def foo():
    pass
# style2
def foo():
    ...
# both the styles are same


Python3
def foo(x = ...):
    return x
  
print(foo)


输出:

[[[0.46253663 0.03092289]
  [0.72723607 0.75953107]]

 [[0.33160093 0.79259324]
  [0.76757812 0.21241883]]]
[[[0.46253663 0.03092289]
  [0.72723607 0.75953107]]

 [[0.33160093 0.79259324]
  [0.76757812 0.21241883]]]

在上面的例子中,[:, :, :, 0], […, 0] 和 [Ellipsis, 0] 都是等价的。

我们不能在单个切片中使用多个省略号,例如 [...,index,...]

在类型提示中

省略号用于使用类型模块指定类型提示(例如,Callable[…, str])。它可以以任何一种方式服务:

方法1:当函数的参数允许类型时:任何

实际上 callable 接受参数:

Callable "[" parameters_expression, type_expression "]"

(例如 Callable[…, str])

例子:

Python3

from typing import Callable
  
def inject(get_next_item: Callable[..., str]) -> None:
            ...
# Argument type is assumed as type: Any
def foo(x: ...) -> None:
              ...

使用 '...' 作为 parameters_expression 表示一个函数返回一个字符串而不指定调用签名。

方法二:当函数返回值为类型时: Any

实际上 callable 以这种方式返回:

Callable "[" parameters_expression, type_expression "]" -> return_type: #body

例子:

Python3

class flow:
    
    # (using "value: Any" to allow arbitrary types)
    def __understand__(self, name: str, value: ...) -> None: ...

用作函数内的 Pass 语句

省略号用于代替函数内部的 pass 语句。 'pass' 替换为 '...' 或 'Ellipsis'。

例子:

Python3

# style1
def foo():
    pass
# style2
def foo():
    ...
# both the styles are same

省略号也可以用作默认参数值。尤其是当您想区分不传入值和传入None时。

例子:

Python3

def foo(x = ...):
    return x
  
print(foo)

输出: