본문 바로가기
코딩 연습/코딩배우기

[python] 객체처럼 다뤄지는 함수, 그리고 이름 없는 함수, 람다(lambda)

by good4me 2020. 8. 19.

goodthings4me.tistory.com

 

■ 파이썬은 모든 것을 객체로 처리한다.

def say():
    print('hello~')

print(type(say)) # <class 'function'> 함수도 function 이라는 클래스

print(type(10)) # <class 'int'>

# 파이썬에서는 정수도 실수도 객체이고, 함수도 객체이다.


def caller(f): # 함수가 객체이기 때문에 caller 함수에 매개변수로 전달
    f()  # caller 함수 호출 시, 매개변수인 함수 say 실행

caller(say) # hello~



# 함수 내 함수를 만들어서 반환

def func(n):
    def exp(x):  # 함수 내에서 정의된 함수
        return x ** n
    return exp  # 함수를 반환

f1 = func(3) # f1 == exp(x)
res = f1(5)  # exp(5)와 동일
print(res) # 125



# exp()를 대체할 수 있는 이름없는 함수 : 람다(lambda)

f2 = lambda : 'Hello, I\'m lambda.' # return 없이 반환
print(f2) # <function <lambda> at 0x0000022043C150D0>
print(f2()) # Hello, I'm lambda.

f3 = lambda n: n // 2
print(f3(5)) # 2


def func(n):
    return lambda x : x ** n

f3 = func(3) # lambda 반환
res = f3(5)
print(res) # 125

 

[참고자료] 윤성우의 열혈 파이썬 중급편

 

good4me.co.kr

댓글