리턴값
python에서 리턴값은 함수가 호출될때 생성된 출력 또는 결과이다. 리턴 값은 숫자, 문자열, 목록, 튜플, 사전 또는 사용자 지정 개체와 같은 모든 데이터 유형이 될 수 있다. Python의 함수는 return 문이 지정되지 않는 경우 암시적으로 None를 반환한다.
함수에서 값을 반환하려면 return 키워드 다음에 반환하려는 값이나 표현식을 사용해보자. 'return'문이 실행되면 함수가 종료되고 리턴값이 호출자에게 다시 전송된다.
다음은 리턴 값의 개념을 설명하는 예제문이다.
def add_numbers(a,b):
result = a + b
return result
# 함수 호출 및 반환 값을 변수에 저장
sum_result = add_numbers(3,5)
print(sum_result) #Output: 8

이 예에서 add_numbers 함수는 두 개의 매개변수 a 및 b를 사용하여 합계를 계산하고 return 문을 사용하여 결과를 반환한다.
함수가 호출되면 리턴 값이 sum_result 변수에 저장되어 출력된다. 함수는 여러 값을 튜플로 반환할 수도 있다. 예를들면 다음과 같다.
def calculate_area_and_perimeter(length, width):
area = length * width
perimeter = 2 * (length + width)
return area, perimeter
# 함수 호출하고 반환 값을 변수에 저장
area_result, perimeter_result = calculate_area_and_perimeter(10, 5)
print(f"Area: {area_result}, Perimeter: {perimeter_result}") #Output: "Area: 50, Perimeter: 30"

이 예에서 calculate_area_and_perimeter 함수는 직사각형의 면적과 둘레라는 두 가지 값을 반환한다. 함수가 호출되면 리턴 값은 area_result 및 perimeter_result 변수에 저장된다. return 문이 실행되면 함수가 즉시 종료된다는 점을 기억해야 한다. 함수 내에서 return 문 뒤에 오는 코드는 실행되지 않는다.
다양한 사용 예시
1. 단일 값 반환: return 키워드의 가장 일반적인 용도는 함수에서 숫자, 문자열 또는 부울과 같은 단일 값을 반환하는 것이다.
def square(x):
return x * x
result = square(4)
print(result) #Output: 16

2. 여러 값 반환: 함수는 튜플을 사용하여 여러 값을 반환할수 있으며 호출자는 이를 별도의 변수로 풀수 있다.
def get_name_and_age():
return "Alice", 30
name, age = get_name_and_age()
print(name, age) # Output: Alice 30

3. 목록, 사전 또는 기타 데이터 구조 반환: 함수는 목록, 사전, 집합 또는 사용자 지정 개체와 같은 보다 복잡한 데이터 구조를 반환 할 수 있다.
def get_squares(numbers):
return [x * x for x in numbers]
squares = get_squares([1,2,3,4])
print(squares) # Output: [1,4,9,16]

4. 함수 또는 람다 함수 반환: 함수는 변수에 할당하고 나중에 호출할 수 있는 다른 함수 또는 람다 함수를 반환할 수 있다.
def make_multiplier(factor):
return lambda x: x * factor
double = make_multiplier(2)
print(double(5)) # Output: 10

5. 조건부 반환: 조건이 있는 여러 'return'문을 사용하여 입력 또는 논리에 따라 다른값을 반환할 수 있다.
def check_sign(number):
if number > O:
return "Positive"
elif number < O:
return "Negative"
else:
return "Zero"
print(check_sign(5)) # Output:Positive

6. Early exit: return 키워드를 사용하면 특정 조건이 충족되거나 오류가 발생하면 나머지 코드를 실행하지 않고 함수를 조기에 종료할 수 있다.
def safe_divide(a,b):
if b == O:
print("Division by zero is not allowed".)
return
result = a / b
return result
print(safe_divide(10, 0)) #Output: Division by zero is not allowed. None

7. 반환문 없음: 함수에 반환문이 없으면 묵시적으로 없음을 반환한다. 이는 작업을 수행하지만 값을 반환할 필요가 없는 함수에 유용하다.
def print_greeting(name):
print(f"hello,{name}!")
result = print_greeting("Alice")
print(result) # Output: Hello, Alice! None

자주 발생하는 실수들
1. return 문 포함을 잊음
일반적인 실수는 값을 반환할 것으로 예상되는 함수에 return 문을 포함하는 것을 잊는것이다. 기본적으로 return문이 없는 함수는 'None'을 반환한다. 때문에 값을 반환할 것으로 예상되는 모든 함수에 return 문을 포함해야 한다.
2. 적절한 형식 없이 여러 값 반환
함수에서 여러 값을 반환할때 개발자는 때때로 튜플이나 목록과 같은 올바르지 않은 데이터 구조를 사용하기도 한다. 따라서 다음과 같이 여러 값을 반환할 때 튜플, 목록 또는 사전을 사용하여 리턴값을 구성해야 한다.
def multiple_values():
return 1,2,3 # Returns a tuple (1,2,3)
3. 리턴 값을 제대로 처리하지 않음
값을 반환하는 함수를 호출할 때 개발자가 리턴값을 처리하거나 저장하는 것을 잊어버리는 경우가 있다. 따라서 함수의 리턴값을 적절하게 저장하거나 처리해야 한다.
def add(a, b):
return a + b
result = add(1,2)
print(result)
4. 조기 루프에서 값 반환
루프를 사용하여 값을 계산할 때 루프 반복이 완료되기 전에 실수로 값을 반환하기 쉽다. 따라서 루프를 조기에 중단하려는 경우가 아니면 return 문이 루프 외부에 있는지 확인해라.
def sum_of_list(lst):
total = O
for number in lst:
total += number
return total # Return statement outside of the loop
5. 재귀함수에서 값을 반환하지 않음
재귀를 사용할 때 호출 스택에 값을 다시 전달하기 위해 return 문을 포함하는 것이 필수적이다. 이를 잊어버리면 예기치 않은 동작이 발생할 수 있다. 따라서 재귀 함수에 return 문을 포함하여 값을 다시 호출 스택으로 전달해야 한다.
def factorial(n):
if n == O:
return 1
else:
return n * factorial(n - 1) # Return statement in the recursive function
이러한 일방적인 실수와 각각의 솔루션을 알고 있으면 Python 함수에서 반환값으로 작업할때 많은 함정을 피할수 있다.
'Python' 카테고리의 다른 글
| [Python] - 람다(Lambda) (0) | 2026.01.16 |
|---|---|
| [Python] - Tuple (0) | 2026.01.16 |
| [PYTHON] - RANGE (0) | 2026.01.15 |
| [PYTHON] - Dictionary (0) | 2026.01.15 |
| [PYTHON] - LIST (0) | 2026.01.01 |