Python에서는 “여러 값을 반환할 때” 튜플이 되는 구조

하지만 정확히는 “튜플로 주는”게 아니라 “쉼표가 튜플을 만드는 것

핵심부터 짚으면, Python에서 튜플을 만드는 것 괄호가 아니라 쉼표(,):

t = 1, 2, 3  # 괄호 없어도 튜플 -> (1, 2, 3)
type(t)      # tuple

그래서 함수에서 여러 값을 쉼표로 반환하면:

def f():
		return 1, 2  # 쉼표 -> 자동으로 튜플 (1, 2)
 
f()              # (1, 2)

그러면 왜 list가 아닌 tuple인가?

  1. 반환값은 “고정된 묶음”이라 불변이 적합

    def get_user():
    		return "kim", 30   # (이름, 나이) - 이 묶음 구조는 바뀔 일이 없음
    

    “이름과 나이 2개를 반환한다”는 구조가 고정

    만약 여기서 .append() 로 값을 더 끼워넣으면 오히려 문제

  2. 성능 - 더 가볍고 빠름

    튜플은 크기가 고정이라 list보다 메모리 적게 쓰고 생성도 빠름

    함수 반환은 수없이 일어나는 동작이라, 가벼운 튜플이 유리

  3. 언패킹이 자연스러움

    반환을 튜플로 하면 받는 쪽에서 바로 풀어쓸 수 있음

    def get_user():
    		return "kim", 30
    
    name, age = get_user()   # 튜플 언패킹 -> name="kim", age=30
    

    이게 Python에서 다중 반환을 쓰는 흔한 패턴