Byeonguk Kim

안녕하세요. 29살의 조금은 늦은 나이로 새롭게 개발자로 시작하는 신입 개발자입니다. 포트폴리오 [https://deaguowl.github.io]

파이썬 07. First class function과 기수법

08 Mar 2019 » Python

2019.03.08 TIL

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

오늘의 한마디:

지금 내 상황을 객관적으로 바라보고, 반성하자.

지금 온전히 집중할 수 있는 지금 이 순간이 내 인생의 최고이다.

if you think you can or if you think you can’t you are right.

First class function

first class function란 프래그래밍 언어가 함수를 first class citizen으로 취급하는 것을 뜻한다. 그렇게 취급을 해주면 뭐가 좋을까?

일단 기본적으로 first class function은 3가지 기능을 충족해야 한다.

  1. 함수를 인자로 쓸 수 있는가?
    • 매개변수는 parameter 할당인자는 argument이다. 이 둘을 혼동해서 쓰기도 하는데 명확한 것은 argument은 함수 안에 인자로 전달되는 명확한 값이고 매개변수는 초기 함수에 지정되는 인자이다.
  2. 함수가 변수에 할당될 수 있는가?

    • a = func() 처음 함수가 변수에 직접 할당될 수 있는가에 대한 문제
  3. 함수를 리턴할 수 있는가?

    • 함수 안에서 return func() 처럼 특정함수를 리턴할 수 있는가에 대한 문제

위의 3가지 조건을 모두 만족하게 되면 first class function을 특정언어에서 지원한다고 할 수 있다.

파이썬은 first class function을 지원한다.

그럼 이제 각각의 예를 들어서 설명해보자.

1. 함수를 매개변수(인자)에 할당할 수 있는가?

def f(a,b):
	return (a+b)

def g(func, c, d):
	return func(c,d)

a = 10
b = 20
g(f , a, b) # 해주면 과연 값이 나올까?

30

값은 30을 반환한다. —> 이를 통해서 우리는 func가 parameter로 쓰인다는 것을 알 수 있다.

2. 함수를 변수에 직접 할당 할 수 있는가??

def f(a,b):
	return (a+b)

g_var = f()
g_var(20, 30) 

값은 50을 반환한다. —-> 이를 통해서 우리는 runc가 변수에 직접 할당될 수 있는 것을 확인할 수 있다.

3. 함수를 리턴할 수 있는가?

firstclassfunction