TIL. 39 What is 'first class function'?

Drageon Lee·2022년 2월 23일
0

TIL_Python

목록 보기
5/11

Today's topic

Decorator에 대해 공부하면서 first class funtion에 대해 접하게 되었다. 이번 posting을 통해 first class function에 대해 정리하고자 한다.

👉 What is "First class function(일급 함수)"?

Programming 언어가 function을 일급 객체(first class citizen)으로 취급하는 것을 뜻한다.
즉, 함수 자체를 인자(argument)로써 다른 함수에 전달하거나 다른 함수의 결과 값으로 return 할 수도 있고, 변수에 할당하거나 data 구조안에 저장할 수 있는 함수를 뜻한다.

First class citizen?
👉 아래와 같은 조건을 만족시키는 객체를 뜻한다.

  • 변수나 data 구조 내에 담을 수 있다.
  • 인자(argument)로 전달이 가능하다.
  • Return 값으로 사용할 수 있다.

👉 Examples for each case!

  • 변수에 function을 할당
    - func 변수에 square 함수를 할당하였고, func(3)으로 함수를 호출하였더니 값이 9가 나왔다.

    def square(x):
        return x * x
    func = square
    print(func(3))		#result = 9
  • Argument로 전달
    - 한 함수에서 함수를 parameter로 받을 시 여러 함수를 argument로 하여 재활용할 수 있다.

      def square(x):
      return x * x
      def cube(x):
      return x * x * x
      def quad(x):
      return x * x * x * x
      def my_map(func, arg_list):
      	result = []
      	for i in arg_list:
        	result.append(func(i))  # square 함수 호출, func == square
      	return result
      num_list = [1, 2, 3, 4, 5]
      squares = my_map(square, num_list)
      cubes = my_map(cube, num_list)
      quads = my_map(quad, num_list)
      print(squares)		#[1, 4, 9, 16, 25]
      print(cubes)			#[1, 8, 27, 64, 125]
      print(quads)			#[1, 16, 81, 256, 625]
  • 함수 내에서 다른 함수를 return
    - 함수 내에 또 다른 함수가 있고 바깥 함수의 return 값에 내부 함수를 두어 return 한다.

    def logger(msg):
        def log_message():  # 1
            print('Log: ', msg)
        return log_message
    log_hi = logger('Hi')
    print(log_hi)  	# log_message object가 출력됩니다.
    log_hi()  		# "Log: Hi"가 출력됩니다.

📖 출처 :

My opinion

일급 함수에 대해 이번 posting을 통해 알아보았다. 일급 함수 & 객체 개념이 closure, decorator, generator를 학습하는데 기초 개념이라고 한다. 이 개념을 바탕으로 다음 단계의 개념에 대해서도 알아보도록 하겠다.

profile
운동하는 개발자

0개의 댓글