[파이썬] Ellipsis (260811)

WonTerry·2026년 8월 11일

Python

목록 보기
23/28

파이썬에서 Ellipsis의 의미

Ellipsis는 파이썬의 내장 싱글턴(singleton) 객체로, ... (점 세 개)로 축약해서 쓸 수 있습니다. None, True, False처럼 파이썬 언어 자체에 내장된 특수 상수입니다.

>>> Ellipsis
Ellipsis
>>> ...
Ellipsis
>>> ... is Ellipsis
True
>>> type(...)
<class 'ellipsis'>

1. 자리표시자(placeholder)로서의 역할

가장 흔한 용도는 "아직 구현하지 않았지만 문법적으로는 뭔가 채워야 하는 자리"를 표시하는 것입니다. pass와 비슷하지만 의미가 다릅니다.

def not_implemented_yet():
    ...   # pass 대신 사용 가능

class MyClass:
    def method(self):
        ...
  • pass: "여기서는 아무 것도 하지 않는다"는 명시적 의도
  • ...: "여기에 나중에 구현이 들어갈 자리" 혹은 "이 시그니처만 의미가 있고 본문은 중요하지 않다"는 뉘앙스

2. @overload에서의 용도 (앞서 예제와 연결)

typing.overload로 장식된 함수는 실제로 실행되지 않으므로, 본문에 굳이 로직을 쓸 필요가 없습니다. 이때 관례적으로 ...를 사용합니다.

@overload
def sum(self, a: int, b: int) -> int: ...

이건 "이 함수는 시그니처(타입 정보)만 제공하고, 실제 코드는 없다"는 뜻을 명확히 드러내는 파이썬 커뮤니티의 관습(convention)입니다.

3. 타입 힌트(stub 파일, .pyi)에서의 용도

타입 스텁 파일(.pyi)에서도 함수 본문 대신 ...를 사용해 "구현은 다른 곳에 있고, 여긴 타입 정보만 제공한다"는 것을 나타냅니다.

# some_module.pyi
def foo(x: int) -> str: ...
class Bar:
    x: int
    def method(self, y: str) -> None: ...

가변 길이 튜플 타입 힌트에도 사용됩니다.

def process(*args: int) -> None: ...
x: Tuple[int, ...]  # 정수가 몇 개든 상관없는 튜플

4. 슬라이싱(NumPy 등)에서의 용도

다차원 배열 인덱싱에서 "나머지 차원은 그대로 둔다"는 의미로 사용됩니다. 이건 파이썬 자체보다는 NumPy에서 활발히 쓰이는 관용구입니다.

import numpy as np

arr = np.zeros((3, 4, 5))
arr[..., 0]      # arr[:, :, 0] 과 동일 — 마지막 차원만 인덱싱, 나머지는 전체 선택
arr[0, ...]       # arr[0, :, :] 과 동일

정리

용도설명
함수/클래스 본문 자리표시자pass 대용, "미구현" 또는 "타입 정보만 의미 있음"을 표현
@overload 데코레이터 함수실제 실행되지 않는 시그니처 선언의 본문
타입 스텁(.pyi) 파일실제 구현 없이 타입 정보만 제공
가변 길이 튜플 타입 힌트Tuple[int, ...]처럼 "개수 제한 없음"을 표현
NumPy 등 슬라이싱여러 차원을 한 번에 선택할 때 "나머지 축은 그대로" 의미

한마디로 Ellipsis(...)는 "여기엔 의도적으로 뭔가 빠져 있다" 또는 "생략됐다"는 것을 문법적으로 유효하게 표현하는 파이썬의 특수 객체입니다.

profile
Hello, I'm Terry! 👋 Enjoy every moment of your life! 🌱 My current interests are Signal processing, Machine learning, Python, Database, LLM & RAG, MCP & ADK, Multi-Agents, Physical AI, ROS2...

0개의 댓글