본문 바로가기
Python/Coding Base

11. 함수(function) 4 - 람다식(무명 함수), 모듈

by Nanki 2022. 1. 23.

무명 함수의 이름보다 람다식으로 널리 알려진 무명 함수는 이름이 없고 몸체만 있는 간략화된 함수이다. python에서 무명함수의 표현은 lambda 키워드로 만들어 진다.

기본 함수와 람다식의 공통점은 다음과 같다.

  • 여러개의 인수를 가질 수 있다.

기본 함수와 람다식의 차이점은 다음과 같다.

  • 반환값은 하나만 존재
  • return 키워드 필요 없고 항상 반환되는 수식만 적어주면 됨.
  • print()함수를 사용할 수 없음
  • 자신만의 이름 공간을 가지고 있어 전역변수 참조 불가 

람다식의 구조

lambda(인수1,...,인수n : 수식)

람다식과 일반 함수 비교 (동일 결과)

### 람다식 ###
sum = lambda x, y : x+y
print("합 계산: ", sum(10,20)) # 합 계산 : 30


### 일반 함수 ###
def get_sum(x,y):
    return x+y
print("합 계산: ", sum(10,20)) # 합 계산 : 30

람다 함수의 쓰임

람다 함수는 코드 안에 함수를 포함하는 곳 어디서든 사용이 가능하다. GUI 프로그램에서 이벤트를 처리하는 콜백 함수(callback handler)에서 많이 사용 된다.

  • 콜백 함수란? : 내가 직접 함수이름을 쳐서 호출시키는 것이 아닌 다른 함수에서 호출되는 함수를 콜백 함수라 부른다. 아래 예에서 repeat_10(print_hi)에서 print_hi가 호출함수가 된다.
def repeat_10(func) :
    for i in range(10):
        func(i)
        
def print_hi(number):
    print("hello", number)
    
repeat_10(print_hi)

# 결과
hello 0
hello 1
hello 2
hello 3
hello 4
hello 5
hello 6
hello 7
hello 8
hello 9
  • 위와 동일한 결과를 얻고자 할 떄 굳이 print_hi 함수를 만들지 않더라도 lambda 함수를 이용해 짧게 표현이 가능하다.
def repeat_10(func) :
    for i in range(10):
        func(i)

repeat_10(lambda number : print('heelow', number))

# 결과는 위와 동일

 

 

콜백함수 예제 참조 : https://m.blog.naver.com/lai4/221775340153

 

[혼자 공부하는 파이썬 / Chapter05] 38강 - 콜백함수와 람다, map()/filter() 함수

콜백함수 콜백함수의 매개변수 내가 함수를 호출하는 것이 아니라 다른 함수에서 호출하는 것: 콜백함수(ca...

blog.naver.com

 

모듈 이란?

함수나 변수들을 모아 놓은 파일을 모듈(module)이라고 한다. 이러한 모듈 안에 있는 함수들은 import 문장으로 다른 모듈로 포함될 수 있다.

이떄 main 모듈은 최상위 수준에서 실행되는 스크립트를 의미한다.

만약 fibo.py 파일을 만들어 저장한다 했을 때 모듈을 불러와 사용하는 방법을 알아보자.

# 방법1
import fibo
# 방법2
from fibo import *

 

함수를 사용해 프로그램 설계시 주의할 점

복잡하고 규모가 큰 프로그램을 한번의 함수로 짜려고 하지말고 보다 단순하고 이해하기 쉬운 문제들로 계속 쪼갠 후 각 문제를 해결한 절차를 함수로 작성해야 한다.