Python3中的三个点点点(Ellipsis)

平时翻阅源码的时候可能会遇到过这样的函数定义。点。点。点(Ellipsis对象,py2中没有这个...语法)

def main(module: Union[None, str, ModuleType] = ...,
         defaultTest: Union[str, Iterable[str], None] = ...,
         argv: Optional[List[str]] = ...,
         testRunner: Union[Type[TestRunner], TestRunner, None] = ...,
         testLoader: TestLoader = ..., exit: bool = ..., verbosity: int = ...,
         failfast: Optional[bool] = ..., catchbreak: Optional[bool] = ...,
         buffer: Optional[bool] = ...,
         warnings: Optional[str] = ...) -> TestProgram: ...

先看看是啥玩意

type(...)
<class 'ellipsis'>

原来是ellipsis,去查了下官方文档,发现这是个built-in constants,下面是文档的描述

Ellipsis

The same as the ellipsis literal “...”. Special value used mostly in conjunction with extended slicing syntax for user-defined container data types.

切片用的,那和常用的[::]有啥区别吗?

aa = [1,2,3,4,5]
print(aa[:2])
[1, 2]
print(aa[...,2])
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: list indices must be integers or slices, not tuple

看来不是这么用,那到底怎么切片?网上查了下资料,在numpy库的array类型可以用,List不能用

然后明白了文档中的这段话for user-defined container data types...

numpy库install比较费劲,没有继续尝试,截取了网上其他文章的内容片段(https://blog.csdn.net/qq_33363973/article/details/79894982)

>>> x = np.array([[[1],[2],[3]], [[4],[5],[6]]])
>>> x[...,0]
array([[1, 2, 3],
[4, 5, 6]])

>>> x[:,:,0]
array([[1, 2, 3],
       [4, 5, 6]])

x[...,0]就等同于x[:,:,0]

好了,回到文章开头,点点点在函数定义中的这种用法起到了什么作用呢?

官方文档中没有找到相关描述,通过查阅资料了解到作用是 可以用来省略代码,类似于pass占位符

但相比于pass,点点点不但可以在函数体,也可以用在变量的赋值中

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值