Python 내부 함수 작업 시 주의사항
Python에는 중첩된
함수뿐만 아니라 하나의 함수가
다른 함수를 반환할 수도 있습니다.
예를 들어, 함수 outer가
함수 inner의 소스 코드를
결과로 반환한다고 가정해 봅시다:
def outer():
def inner():
return '+++'
return inner
outer 호출을
변수 res에
기록해 봅시다:
res = outer()
print(res)
코드 실행 후 함수 객체가 출력됩니다:
<function outer.<locals>.inner at 0x000001564A212B90>
변수 res를
괄호와 함께 호출하면
메시지 '+++'가
반환됩니다:
print(res()) # '+++'를 출력합니다
res에
두 개의 괄호를 가진 outer를
기록하도록 코드를 다시 작성할 수 있습니다 - 하나는 자신을 호출하기 위한 것이고 다른 하나는 함수
inner를 호출하기 위한 것입니다. 따라서 외부 함수 오른쪽에 그 안에 중첩된 함수의 수만큼
추가 괄호를 기록할 수 있습니다:
res = outer()()
print(res) # '+++'를 출력합니다
다음 코드가 주어졌습니다:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
콘솔에 무엇이 출력될지 말하세요.
다음 코드가 주어졌습니다:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
콘솔에 무엇이 출력될지 말하세요.