함수형 프로그래밍이 가능해진다. 순수 함수로 작성이 가능하고 함수 기반으로 작성하기 때문에 매우 좋을 수도 있다.
javascrip도 이런 점이 가능함, 사실 요즘 언어가 진화하면서 살아있는 언어는 다...
def factorial(n):
"""
Factoria Function
:param n: int
:return:
"""
if n == 1: # n < 2
return 1
return n * factorial(n-1)
class A:
pass
print(factorial(5))
print(factorial.__doc__)
print(type(factorial), type(A))
print(set(sorted(dir(factorial))) - set(sorted(dir(A)))) # 함수 안에 있는 부분만 뽑아낸 부분
print(factorial.__name__)
print(factorial.__code__)
# 변수 할당
var_func = factorial
print(var_func)
print(var_func(10))
print(list(map(var_func, range(1, 11))))
정말 신기하게도 이러한 방식으로 작업을 할 수 있다.
# 한수 인수 전달 및 함수로 결과 반환 -> 고위 함수 (Higher-order function)
# map, filter, reduce
# es6 에서도 있다..
print([var_func(i) for i in range(1, 6) if i % 2]) # 1! , 3!, 5!
print(list(map(var_func, filter(lambda x: x % 2, range(1, 6)))))