为了账号安全,请及时绑定邮箱和手机立即绑定

PythonEllipsis对象是做什么的?

PythonEllipsis对象是做什么的?

天涯尽头无女友 2019-06-20 16:52:59
PythonEllipsis对象是做什么的?在随意浏览命名空间时,我注意到一个奇怪的对象,名为“省略“,它似乎没有什么特别之处,也没有什么特别之处,但它是一个全球范围内可供使用的建筑。”经过搜索,我发现它在Numpy和Sciy的切片语法的一些模糊变体中使用。但几乎没有别的。该对象是否专门添加到语言中以支持Numpy+Scipy?省略号是否有任何通用的含义或用途?D:\workspace\numpy>pythonPython 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32Type "help", "copyright",  "credits" or "license" for more information.>>> EllipsisEllipsis
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

这是在另一个问题最近。我会详细说明我的回答从那里:

省略是一个可以片表示法出现的对象。例如:

myList[1:2, ..., 0]

它的解释完全取决于实现__getitem__函数与视点Ellipsis对象,但是它的主要(和预期的)用途在数值蟒蛇扩展,它添加了多维数组类型。由于有多个维度,切片变得比仅仅是一个开始和停止索引更复杂;能够在多维中切片也是很有用的。例如,给定一个4x4数组,左上角区域将由切片定义。[:2,:2]:

>>> a
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])>>> a[:2,:2]  # top leftarray([[1, 2],
       [5, 6]])

进一步扩展这一点,在这里使用Ellipsis来表示未指定的其他数组维度的占位符。把它看作是指示整个切片[:]对于空隙中的所有尺寸,它被放置,所以对于一个三维数组,a[...,0]是相同的a[:,:,0]第四天,a[:,:,:,0],类似地,a[0,...,0]a[0,:,:,0](然而,中间有许多冒号构成数组中的全部维数)。

有趣的是,在python 3中,省略文字(...)在片语法之外是可用的,因此您实际上可以编写:

>>> ...Ellipsis

除了不同的数字类型,不,我不认为它是用的。据我所知,它纯粹是为numpy使用而添加的,除了提供对象和相应的语法之外,没有其他核心支持。在那里的对象不需要这个,但是字面上的“.”对切片的支持。


查看完整回答
反对 回复 2019-06-20
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

在Python 3中,可以使用省略文本...作为代码的“NOP”占位符:

def will_do_something():
    ...

这是魔术;任何表达式都可以用来代替...,例如:

def will_do_something():
    1

(不能用“批准”一词,但我可以说这种用法是不被拒绝)


查看完整回答
反对 回复 2019-06-20
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

还可以在指定预期值时使用省略号。博士考试产出:

class MyClass(object):
    """Example of a doctest Ellipsis

    >>> thing = MyClass()
    >>> # Match <class '__main__.MyClass'> and <class '%(module).MyClass'>
    >>> type(thing)           # doctest:+ELLIPSIS
    <class '....MyClass'>
    """
    pass


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 808 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信