본문 바로가기
Python/기초

파이썬 함수 3편: 함수 안의 함수와 lambda

by 모두의 케빈 2023. 8. 28.

 

 

함수 안의 함수와 return


함수 안에서 함수 호출하기

 

함수 안에서 또 다른 함수를 호출할 수 있습니다. 이 경우 두 가지로 나뉘는데요. 자기 자신을 호출하는 경우와 다른 함수를 호출하는 경우입니다. 자기 자신을 호출하는 경우에는 특별히 재귀 함수라고 합니다. 

 

재귀 함수의 경우에는 무한 번 자기 자신만 호출할 수 있기 때문에 재귀 루프를 탈출할 수 있는 조건이 필요합니다. 반복문에서 break가 이 역할을 했다면, 함수에는 return이 있습니다.

 

 

무한 루프에 빠지는 함수

def recall():
    print("재귀함수")
    recall()

recall()

 

위의 함수는 무한 루프에 빠지는 함수입니다. 계속해서 자기 자신을 호출하기 때문인데요. return 문을 활용하여 탈출 조건을 적어줘야 합니다. return은 함수에서 탈출 또는 종료를 의미하기 때문에 return 아래의 코드는 실행되지 않습니다.

# 함수에서 return은 반복문의 break와 같다.

def recall(count):
    if count == 5:
        print("5회 반복되어 재귀함수 종료")
        return 
    
    count +=1
    print("재귀함수")
    recall(count)
    
recall(0)

 >>>>> 실행 결과:
재귀함수
재귀함수
재귀함수
재귀함수
재귀함수
5회 반복되어 재귀함수 종료

 

 

 

 

특별한 함수: lambda


lambda란?

 

파이썬에서 람다(lambda)는 익명 함수라는 의미를 가진 함수입니다. 익명, 말 그대로 이름을 정의하지 않고 선언하는 함수라는 의미입니다. 사용법은 아래와 같습니다.

lambda 매개변수1, 매개변수2 … : 매개변수의 연산

 

람다 함수는 사용 빈도가 그렇게 많지 않으면서 함수의 형태로 코드를 활용해야 하는 경우나, map과 같은 다른 함수와 함께 사용하기 위해 선언됩니다. 

 

 

lambda 예제

 

 

두 숫자를 더하는 함수를 lambda 예약어를 통해 구현해 보겠습니다.

# lambda를 사용하면 객체가 반환되므로, 변수에 넣을 수 있 다.
add_two_values = lambda a,b : a+b
add_two_values(1,5)
 >>>>> 실행 결과: 6

 

 

이번에는 입력된 문자를 대문자로 바꿔주는 함수를 만들어 보겠습니다.

upper = lambda x : x.upper()
upper('me')
 >>>>> 실행 결과: 'ME'

 

 

 

 

댓글