본문 바로가기
파이썬

[파이썬] 함수, 퍼스트 클래스 함수

by 코딩라이프 2022. 11. 19.

퍼스트클래스 함수란, 프로그래밍 언어가 함수를 first-class-citizen으로 취급하는 것을 말합니다.

함수를 객체로 취급하여 다음과 같은 것들을 할 수 있습니다.

1. 함수를 변수에 할당한다.

2. 함수를 인자로 넘긴다.

3. 함수를 리턴한다.

 

위 3가지에 해당하는 내용을 예시코드를 통해 살펴보겠습니다.

 


1. 함수를 변수에 할당한다.

 

■ 아래 코드는 하나의 숫자를 인자로 받아 제곱한 값을 리턴해주는 함수로, 일반적인 함수 사용법입니다.

def square(n):
    return n**2

print(square(5))

[실행결과] 25

 

 

■ 위 코드에서 함수명 square를 변수 f에 할당하여 f를 함수명처럼 사용합니다.

def square(n):
    return n**2

f = square  # 함수명을 변수에 할당
print(f(5))

[실행결과] 25

 

2. 함수를 인자로 넘긴다.

■ 아래 코드에서 mylist 함수의 인수로 함수와 리스트를 받아옵니다.

   mylist 함수 : 인수로 받은 arg_list의 각 요소에 인수로 받은 함수 func를 적용하여 리턴하는 함수입니다.

def square(n):
    return n**2

def cube(n):
    return n * n * n

def quad(n):
    return n * n * n * n


def mylist(func,arg_list):             # 함수명, 리스트를 각각 인수 func, arg_list에 받는다.
    result_list = []
    for i in arg_list:
        result_list.append(func(i))    # arg_list의 각 요소에 전달받은 함수를 적용한다.
    return result_list

print(mylist(square,[1,2,3,4,5])) # square 함수를 인자로 넘긴다.
print(mylist(cube,[1,2,3,4,5]))   # cube 함수를 인자로 넘긴다.
print(mylist(quad,[1,2,3,4,5]))   # quad 함수를 인자로 넘긴다.

[ 실행결과 ]

[1, 4, 9, 16, 25]
[1, 8, 27, 64, 125]
[1, 16, 81, 256, 625]

 

 

3. 함수를 리턴한다.

■ mymsg('hi')로 함수를 호출하면 mymessage함수를 리턴한다.

def mymsg(s):
    def mymessage():  
        print('msg :',s)

    return mymessage

f = mymsg('hi')  # 변수 f에 리턴된 log_message함수 할당
f()               # 변수 f를 함수처럼 사용

[ 실행결과 ]

msg : hi