파이썬에서 함수는 일급 객체이다. 즉 함수는 int나 list와 같은 모든 자료형들과 같이 객체로 취급할 수 있다는 뜻이다. 함수에도 자료형이 있기 때문에 예를 들어 type (fact)라는 수식을 입력하면 <type 'function'>이라는 결과가 나온다.
# 함수를 리스트의 요소로 사용하기
def applyToEach(L, f):
for i in range(len(L)):
L[i] = f(L[i])
def factR(n):
if n == 1:
return n
else:
return n*factR(n-1)
def fib(n):
if n == 0 or n ==1:
return 1
else:
return fib(n-1) + fib(n-2)
L = [1, -2, 3.33]
print('L =', L)
print('Apply abs to each element of L.')
applyToEach(L, abs) # 절대 값
print('L =', L)
print('Apply int ot each element of', L)
applyToEach(L, int)
print('L =', L)
print('Apply factorial to each element of', L)
applyToEach(L, factR)
print('L =', L)
print('Apply Fibonnaci to each element of', L)
applyToEach(L, fib)
print('L =', L)
함수 applyToEach는 함수로 된 인자를 가지고 있기 때문에 고차함수라 불린다 . 처음 호출되었을 때 applyToEach는 단항 내장 함수인 abs를 각 요소에 적용하여 리스트 L을 변형시킨다. 두 번째 호출되었을 때는 각 요소를 형식 변환한다. 세번째 호출되었을 때는 각 요소들에 정의된 factR 함수를 적용한다. 네 번째 호출되었을 때는 각 요소들에게 정의된 fib 함수를 적용한다.
출력 결과
L = [1, -2, 3.33]
Apply abs to each element of L.
L = [1, 2, 3.33]
Apply int ot each element of [1, 2, 3.33]
L = [1, 2, 3]
Apply factorial to each element of [1, 2, 3]
L = [1, 2, 6]
Apply Fibonnaci to each element of [1, 2, 6]
L = [1, 2, 13]
'파이썬' 카테고리의 다른 글
(파이썬) 딕셔너리(Dictionary) (1) | 2023.08.04 |
---|---|
(파이썬) 문자열, 튜플, 리스트 (0) | 2023.08.04 |
(파이썬) 함수를 객체로 사용하기 (0) | 2023.08.04 |
(파이썬) 함수를 객체로 사용하기 (0) | 2023.08.04 |
(파이썬) 리스트 조건 제시법 (0) | 2023.08.04 |