본문 바로가기
SK 행복성장캠퍼스/Python 기초

0904_5일차_함수_람다함수

by NickNuma 2020. 9. 7.

이번엔 함수 파트 중 거의 마지막, 람다함수입니다.

 


람다함수는 일반함수의 다른 표현 방법입니다.
(단, 함수의 문장이 단일 문장인 경우에만 람다함수로 표현이 가능합니다.)
함수의 이름이 없기때문에 반드시 변수에 저장해서 사용합니다. ==> 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}

 

다음은 유틸리티 함수입니다.

그럼 이만.

반응형

댓글