함수형 프로그래밍이 가능해진다. 순수 함수로 작성이 가능하고 함수 기반으로 작성하기 때문에 매우 좋을 수도 있다.

파이썬 함수 특징 (일급 함수 특징)


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)))))