반응형

안녕하세요.  오늘의 주제는 함수를 객체처럼 다루기 입니다.

 

 

일단 아래와 같이 factorial 함수를 간단히 작성해보겠습니다.

 

def factorial(n):

    

    if n < 2 :

        return 1

    

    return n * factorial(n-1)



print(factorial(3))

print(factorial.__doc__)  # return n!

 

아래 처럼 함수 객체를 새로운 fact 라는 변수에 할당하고, 이 변수명을 통해 함수를 호출해볼 수 있습니다. 

 

fact = factorial

fact(5)

 

 

이번엔 factorial 을 map() 을 써서 호출해보겠습니다. 

(참고로 map 함수는 반복 가능한 객체를 2번째 요소로 넣어, 1번째 함수의 적용한 결과를 가지는 반복 가능형 객체를 반환합니다.)

 

map(fact,range(5)) -> 0 부터 4까지의 리스트

 

이렇게 하면 map의 주소가 출력되기 때문에, 가시적으로 확인하기 위해 list 로 형변환 해보겠습니다.

list(map(factorial,range(5))) 
-> output [1, 1, 2, 6, 24]

 

 

 위와 같이 구현하는 스타일을 함수형 프로그래밍이라고 부릅니다.

 

 

반응형

+ Recent posts