지금까지 함수의 결과를 변수에 저장할 때 값을 한 개만 저장했습니다. 이번에는 함수에서 값을 여러 개 반환하는 방법을 알아보겠습니다.
함수에서 값을 여러 개 반환할 때는 다음과 같이 return에 값이나 변수를 ,(콤마)로 구분해서 지정하면 됩니다.
def 함수이름(매개변수): return 반환값1, 반환값2
그럼 두 수를 더한 값과 뺀 값을 반환하는 함수를 만들어보겠습니다. 다음과 같이 return으로 a와 b를 더한 값과 a에서 b를 뺀 값을 반환하도록 만듭니다.
>>> def add_sub(a, b): ... return a + b, a - b ...
이제 add_sub 함수에 10과 20을 넣고 결과를 x와 y에 저장합니다. 그리고 x와 y의 값을 출력해봅니다.
>>> x, y = add_sub(10, 20) >>> x 30 >>> y -10
x의 값을 출력해보면 10과 20을 더한 값인 30이 나오고, y의 값을 출력해보면 10에서 20을 뺀 값인 -10이 나옵니다. 이처럼 return은 값을 여러 개 반환할 수 있습니다.
add_sub 함수의 호출 과정을 그림으로 표현하면 다음과 같은 모양이 됩니다.
▼ 그림 29-4 반환값 여러 개를 변수 여러 개에 저장이렇게 return으로 값을 여러 개 반환하면 실제로는 튜플이 반환됩니다. 다음과 같이 add_sub의 결과를 변수 한 개에 저장해서 출력해보면 튜플이 반환되는 것을 볼 수 있습니다.
>>> x = add_sub(10, 20) >>> x (30, -10)
즉, 튜플이 변수 여러 개에 할당되는 특성을 이용한 것입니다(언패킹).
>>> x, y = (30, -10) >>> x 30 >>> y -10
참고 | 값 여러 개를 직접 반환하기
함수에서 값 여러 개를 직접 반환할 때는 다음과 같이 return에 튜플을 지정해주면 됩니다.
def one_two(): return (1, 2)
사실 파이썬에서는 괄호 없이 값을 콤마로 구분하면 튜플이 되죠? 즉, 튜플 1, 2는 튜플 (1, 2)와 같습니다.
따라서 return 1, 2는 return (1, 2)와 의미가 같습니다.
def one_two(): return 1, 2 # return (1, 2)와 같음
물론 return에서 리스트를 직접 반환해도 됩니다. 이때도 반환값을 변수 여러 개에 저장할 수 있습니다.
>>> def one_two(): ... return [1, 2] ... >>> x, y = one_two() >>> print(x, y) 1 2
파이썬의 함수에서 두개 이상의 값을 리턴하는 방법을 소개합니다. 아래와 같이 comma로 구분하여 여러 값을 리턴할 수 있습니다. 두개 이상의 값을 리턴하면 Tuple로 전달됩니다. 리턴되는 객체의 타입을 확인해보면 Tuple입니다. def myFunc():
return "hello", 100
result = myFunc()
print(type(result)) Output: 함수가 두개 이상의 값을 리턴할 때, 아래와 같이 var1, var2 = func() 형식으로, 원하는 변수에 값을 받도록 할 수 있습니다. 리턴하는 순서대로 변수에 할당됩니다. def myFunc():
return "hello", 100
first, second = myFunc()
print(first)
print(second) Output: 3개 이상의 변수를 리턴할 때도 아래와 같이 comma로 구분하여 리턴할 수 있고, 각각의 변수로 값을 받을 수 있습니다. 그리고 모두 다른 타입의 객체를 리턴할 수도 있습니다. def myFunc():
return "hello", 100, ['a', 'b']
first, second, third = myFunc()
print(first)
print(second)
print(third) Output: 아래와 같이 1개의 리스트에 여러 값을 저장하여 리턴할 수 있습니다. 1개의 리스트가 리턴되며, 리턴되는 리스트에서 Index로 변수에 접근할 수 있습니다.1. 함수에서 여러 값을 Tuple로 리턴
1.1 Example : Unpacking
1.2 Example : Unpacking
2. 함수에서 리스트로 여러 값을 리턴
def myFunc(): return ["hello", 100] result = myFunc() print(result) print(result[0]) print(result[1])
Output:
3. 함수에서 딕셔너리로 여러 값을 리턴
1개의 딕셔너리에 여러 값을 여러 값을 저장하고 그 딕셔너리를 리턴할 수 있습니다. 딕셔너리가 리턴되면, 약속된 key로 변수에 접근할 수 있습니다.
def myFunc(): return {"first": "hello", "second": 100} result = myFunc() print(result) print(result["first"]) print(result["second"])
Output:
{'first': 'hello', 'second': 100} hello 100
- Python - asyncio로 비동기 처리 구현
- Python - 딕셔너리 필터링, 3가지 방법
- Python - 파일 이름 변경, 3가지 방법
- Python - pathlib 실행 파일 경로, 작업 디렉토리 확인, 변경
- Python - 빈 파일 생성, 3가지 방법
- Python - 리스트 필터링, 3가지 방법
- Python 명령행 인자 받기 (argparse)
- Python - venv로 가상환경 구성 및 설정
- Python - 싱글턴(Singleton) 패턴, 3가지 방법
- Python - 리스트 복사 (deep, shallow copy)
- Python - 리스트 역순으로 순회
- Python - 객체 리스트 정렬
- Python - 랜덤 float 생성 방법
- Python - 패킹(packing), 언패킹(unpacking)
- Python - 객체를 문자열(string)로 변환
- Python - 리스트를 튜플로 변환, 3가지 방법
- Python - 튜플을 리스트로 변환, 4가지 방법
- Python - sum()으로 딕셔너리 합계 계산
- Python - 2진수를 10진수로 변환
- Python - Set 요소 추가, 삭제 방법
- Python - Set 생성 및 초기화 방법
codechachaCopyright ©2019 codechacha