인프런 커뮤니티 질문&답변

ABCDEdu님의 프로필 이미지
ABCDEdu

작성한 질문수

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

functions(1-2)

중첩함수 질문입니다.

작성

·

150

2

안녕하세요.

def nested_func(num):

    def func_in_func(num):

        print(num)

    print("In func")

    func_in_func(num + 100)

nested_func(100)

수업 예제 코드에서

print(num)이 있는데, num은 문자라서 print가 안 되긴 하는 것 같은데, 저 코드가 꼭 들어가야 하는 이유가 무엇인가요?

코드 논리 흐름이 좀.. 잘 이해가 안 되네요..

논리 흐름좀 짚어서 설명해주시면 감사하겠습니다!

답변 3

3

def nested_func(num): #2
    def func_in_func(num): #5
        print(num) #6
    print("In func") #3
    func_in_func(num + 100) #4
nested_func(100) #1

안녕하세요!

순서가 복잡하니까 일단 코드안에 순서를 적어뒀습니다.

#2의 nested_func함수는 불리지않았으니까 실행이안돼죠?

그 안의 코드를 모두넘어서 밖에있는 #1코드가 먼저실행됍니다.

#1.nested_func(100)로 함수를 호출하면 #2.def nested_func(num)이 실행됩니다.

현재num은 100입니다.

그 안의 #4도 역시 호출이 되지않아서 넘어갑니다.

이제#3.print("In func")가 실행되서 출력됩니다.

다음은 #4.func_in_func(num + 100)인데 아직 num은 100이였죠?

그래서 #4.func_in_func(100 + 100)로 호출이됩니다.

#5.func_in_func(num)여기서 문제가 있습니다.

현재 num은 몇일까요? 정답[200]입니다.

마지막에 #6.print(num)은 200이 출력됩니다.

2

좋은사람님의 프로필 이미지
좋은사람
지식공유자

좋은 답변입니다.

2

길지만 되도록 줄였으니까 끝까지설명을 읽어주시면 감사합니다!

ABCDEdu님의 프로필 이미지
ABCDEdu

작성한 질문수

질문하기