무명 함수의 이름보다 람다식으로 널리 알려진 무명 함수는 이름이 없고 몸체만 있는 간략화된 함수이다. 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
모듈 이란?
함수나 변수들을 모아 놓은 파일을 모듈(module)이라고 한다. 이러한 모듈 안에 있는 함수들은 import 문장으로 다른 모듈로 포함될 수 있다.
이떄 main 모듈은 최상위 수준에서 실행되는 스크립트를 의미한다.
만약 fibo.py 파일을 만들어 저장한다 했을 때 모듈을 불러와 사용하는 방법을 알아보자.
# 방법1
import fibo
# 방법2
from fibo import *
함수를 사용해 프로그램 설계시 주의할 점
복잡하고 규모가 큰 프로그램을 한번의 함수로 짜려고 하지말고 보다 단순하고 이해하기 쉬운 문제들로 계속 쪼갠 후 각 문제를 해결한 절차를 함수로 작성해야 한다.
'Python > Coding Base' 카테고리의 다른 글
13. 리스트(List) 2 - 얕은 복사, 깊은 복사 (0) | 2022.01.30 |
---|---|
12. 리스트(List) 1 - 리스트와 시퀀스(sequence) (0) | 2022.01.23 |
10. 함수(function) 3 - 참조 값, 지역 변수, 전역 변수 (0) | 2022.01.23 |
9. 함수(function) 2 - 디폴트 인수, 키워드 인수 (0) | 2022.01.23 |
8. 함수(function) 1 - 인수, 매개변수, 반환 값 (0) | 2022.01.18 |