Python - ValueError too many values to unpack (expected 2)

최대 1 분 소요

파이썬 결과 반환 에러

rc, result = SomeObject.SomeFunction()

에러 발생

ValueError: too many values to unpack (expected 2)

에러 원인

함수의 반환값으로 2개 이상의 값을 반환하지만, 해당 값을 두 개의 변수(위와 같이 rc, result)로 압축 해제하려고 하기때문에 발생되는 에러이다. 이 오류를 해결하려면 압축을 풀고 있는 변수 수를 조정하거나 예상되는 값 수를 반환하도록 함수를 수정해야 한다.

‘_’ 사용

‘는 반환된 나머지 값을 무시한다. 추가 값은 ‘‘변수에 수집되는데, 의미는 추가적으로 반환되는 값들은 관심이 없다는 것을 의미한다.

Only unpack the first two values and ignore the rest

rc, result, *_ = SomeObject.SomeFunction()

print("rc:", rc)
print("result:", result)

* 의미

Python에서 *(별표)는 “변수로 압축 풀기” 또는 “표시 연산자”라고도 알려진 확장 압축 풀기에 사용된다. 이를 통해 반복 가능한 항목(예: 목록 또는 튜플)의 여러 항목을 변수에 할당할 수 있다. 이는 추가 항목을 무시하기 위한 *_의 특정 용도이다.

사용법을 분석하면 다음과 같다.

a, b, *rest = [1, 2, 3, 4, 5]
print(a)     # Output: 1
print(b)     # Output: 2
print(rest)  # Output: [3, 4, 5]

태그:

카테고리:

업데이트:

댓글남기기