이번엔 함수 파트 중 거의 마지막, 람다함수입니다.
람다함수는 일반함수의 다른 표현 방법입니다.
(단, 함수의 문장이 단일 문장인 경우에만 람다함수로 표현이 가능합니다.)
함수의 이름이 없기때문에 반드시 변수에 저장해서 사용합니다. ==> 1급 객체 형태로 사용
문법 (Syntax):
변수명 = lambda 파라미터 변수 : 표현식
"""
람다함수(lambda)
1) 4가지 형태의 일반함수의 다른 표현방법이다.
단, 함수의 문장이 단일 문장인 경우에만 람다함수로 표현 가능하다.
2) 특징:
- 익명함수 (anonymous function, 함수의 이름이 없다.)
따라서, 변수에 저장해서 사용한다.
변수명(A) = 람다 함수(함수객체) #변수명으로 호출
* 변수명(A)를 이용해서 무엇을? ===> 일급객체 형태로 활용 가능
1) 다른 변수에 저장
2) 함수 호출시 인자값으로
3) 함수 호출시 리턴값
3) 문법 (Syntax):
변수명(함수명) = lambda 파라미터변수 : 표현식
"""
1. 파라미터 X, 리턴값 X 형태
변수명 = lambda : 표현식
#1. 파라미터 X, 리턴값 X 형태
#가. 일반 함수
def fun1():
print("fun1")
fun1() # fun1
#나. 람다 함수
fun1 = lambda : print("lambda fun1")
fun1() # lambda fun1
2. 파라미터 O, 리턴값 X 형태
변수명 = lambda 파라미터 변수 : 표현식
#2. 파라미터 O, 리턴값 X 형태
#가. 일반 함수
def fun2(n, n2):
print(n, n2)
fun2(10, 20) # 10 20
#나. 람다 함수
fun2 = lambda n, n2: print("lambda fun2", n, n2)
fun2(100, 200) # lambda fun2 100 200
3. 파라미터 X, 리턴값 O 형태
변수명 = lambda : 리턴값
#3. 파라미터 X, 리턴값 O 형태
#가. 일반 함수
def fun3():
return 100
result = fun3()
print("일반 함수 :", result) # 일반 함수 : 100
#나. 람다 함수
fun3 = lambda : 1000
result = fun3()
print("람다 함수 :", result) # 람다 함수 : 1000
4. 파라미터 O, 리턴값 O 형태
변수명 = lambda 파라미터 변수 : 리턴값
#4. 파라미터 O, 리턴값 O 형태
#가. 일반 함수
def fun4(n, n2):
return n + n2
result = fun4(10, 20)
print("일반 함수 :", result) # 일반 함수 : 30
#나. 람다 함수
fun4 = lambda n, n2: n+n2
result = fun4(100, 200)
print("람다 함수 :", result) # 람다 함수 : 300
람다 함수에서도 Default 파라미터 사용 가능
# 람다 함수에서도 Default 파라미터 사용 가능
print("람다 함수에서도 Default 파라미터 사용 가능")
#가. 일반 함수
def fun5(n= 30, n2 = 200): # 함수 선언시 파라미터에 default 값을 줌.
print(n, n2)
fun5() # 30 200
#나. 람다 함수
fun5 = lambda n = 30, n2 = 200: print(n, n2)
fun5(1,2) # 1 2
fun5(10) # 10 200
fun5() # 30 200
람다 함수에서도 파라미터 * packing 사용 가능
# 람다 함수에서도 파라미터 packing 사용 가능
print("람다 함수에서도 파라미터 packing 사용 가능")
#가. 일반 함수
def fun6(n,*n2): # * packing 사용 ==> tuple()
print(n, n2)
fun6(10, 20, 30) # 10 (20, 30)
#나. 람다 함수
fun6 = lambda n, *n2: print(n, n2)
fun6(10, 20) # 10 (20, )
fun6(9, 8, 7) # 9 (8, 7)
fun6(90, 30, 50, 60) # 90 (30, 50, 60)
람다 함수에서도 dict로 ** packing 사용 가능
# 람다 함수에서도 dict로 packing 사용 가능
print("람다 함수에서 dict로 packing 사용 가능")
#가. 일반 함수
def fun7(**n): # ** packing 사용 ==> dict()
print(n)
#나. 람다 함수
fun7 = lambda **n : print(n)
fun7(name = "홍길동", age = 20) # {'name': '홍길동', 'age': 20}
람다 함수에서도 *, **혼합 packing 사용 가능
# 람다 함수에서도 *, **혼합 packing 사용 가능
print("람다 함수에서 *, **혼합 packing 사용 가능")
#가. 일반 함수
def fun8(n, *n2, **n3):
print(n, n2, n3)
#나. 람다 함수
fun8 = lambda n, *n2, **n3 : print(n, n2, n3)
fun8(10, 20, 30, name=1, age=2) # 10 (20, 30) {'name': 1, 'age': 2}
다음은 유틸리티 함수입니다.
그럼 이만.
반응형
'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글
0904_5일차_함수_클래스 (0) | 2020.09.07 |
---|---|
0904_5일차_함수_유틸리티 함수 (0) | 2020.09.07 |
0903_4일차_연습문제 (0) | 2020.09.06 |
0903_4일차_함수_일급객체 (0) | 2020.09.06 |
0903_4일차_함수_파라미터 (0) | 2020.09.06 |
댓글