Python의 내부 함수
Python에서는 한 함수 내부에 다른 함수를
선언할 수 있습니다. 외부 함수
outer가 있고, 그 안에 함수
inner가 있는 경우를 생각해 봅시다:
def outer():
def inner():
pass
위의 예제는 상당히 간단해 보입니다.
그러나 종종 함수 outer의 본문에
inner 외에도 다른 연산이 수행되는
상황이 있습니다. 코드를 단순화하기 위해
inner를 외부 코드 블록으로
빼낼 수 있지만, 이 함수는 단 한 번만,
그리고 outer 함수 내부에서만
사용될 것입니다. 따라서 함수를 외부로
빼내는 것은 의미가 없습니다.
함수 outer에 리스트가 전달되고,
함수 inner를 통해 리스트의 숫자 요소를
제곱하는 예제를 살펴봅시다. 이를 위해
함수 inner 다음에 빈 리스트
res를 선언하고, 이 리스트에
루프를 통해 제곱된 요소들을 누적합니다:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
함수 outer를 호출하고, 매개변수로
리스트를 전달한 후 결과를 콘솔에
출력해 봅시다:
print(outer([2, 3, 5])) # [4, 9, 25]를 출력합니다
외부 함수와 내부 함수를 작성하세요. 두 함수의 공동 작업으로 리스트의 각 문자열 요소를 대문자로 시작하게 출력해야 합니다.
다음 함수가 주어졌습니다:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
func1이 func2의 내부 함수가
되도록 코드를 다시 작성하세요.