퍼스트클래스 함수란, 프로그래밍 언어가 함수를 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
'파이썬' 카테고리의 다른 글
[파이썬] 함수 내에 함수가 정의되어 있는 경우 지역변수 사용 (0) | 2022.11.20 |
---|---|
[파이썬] 함수에서 변수의 사용 범위 (0) | 2022.11.20 |
[파이썬] openpyxl, 셀에 접근하기 (1) | 2022.11.18 |
[파이썬] openpyxl, 엑셀파일/시트 생성하기 (0) | 2022.11.17 |
[파이썬] sys모듈로 표준출력장치 변경하기 (0) | 2022.11.16 |