Table Of Contents

Ellipsis는 Python의 Built-in 상수 객체이다. 주로 다른 slicing 문법들과 결합되어 사용된다.

다음과 같은 형식으로 Slicing에 사용된다.

1
2
3
a[...]
a[1, ...]
a[0, ..., 0]

Python 콘솔에 ...을 입력해보면 아래처럼 나온다.

1
2
>>> ...
Ellipsis

Python 객체를 ...로 Slice 하면 내부적으로 Ellipsis를 사용한다.

아래와 같은 클래스를 이용해서 slice 작업을 할때 어떤 일이 일어나는지 확인해볼 수 있다. Python에서 객체에 Slice 작업을 하면 내부에서 __getitem__ 함수가 호출 된다. 이 점을 활용해서 __getitem__ 함수를 원래 기능이 아닌, 받은 인자와 그 타입을 출력하는 함수로 overwrite 한다.

1
2
3
class GetItemTest(object):
  def __getitem__(self, item):
      print(type(item), item)

그렇게 정의한 클래스로 Python Slice 작업을 수행한 결과는 아래와 같다. ...으로 Slice 하였을 때 Ellipsis Object가 생성된 것을 볼 수 있다.

1
2
3
4
5
6
7
8
9
10
11
>>> t = GetItemTest()
>>> t[1]
<class 'int'> 1
>>> t[:2]
<class 'slice'> slice(None, 2, None)
>>> t[1:2]
<class 'slice'> slice(1, 2, None)
>>> t[...]
<class 'ellipsis'> Ellipsis
>>> t[...,1:]
<class 'tuple'> (Ellipsis, slice(1, None, None))

Meta Info

Categories: ,

Published At:

Modified At:

Leave a comment