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))
Leave a comment