• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

클로저 예제 중 'NoneType' 에 대한 질문입니다.

21.01.17 14:46 작성 조회수 64

1

def closure_ex1():

       series = []

       def averager(v):

             series.append(v)

             print('inner >> {} / {}'.format(series, len(series)))

             return sum(series) / len(series)

       (return averager)

avg_closure1 = closure_ex1()

avg_closure2 = closure_ex1

위의 클로저 예제에서 closure_ex1 함수의 return averager를 제거하고 두가지 방식으로 변수 할당을 해보았습니다.

그리고 아래와 같이 타입을 출력해보았는데 NoneType과 function이라는 결과값이 나왔습니다.

print(type(avg_closure1)) -> NoneType

print(type(avg_closure2)) -> function 

avg_closure1 = closure_ex1() 이렇게 변수를 할당하는 것은 avg_closure1에 closure_ex1 함수가 실행된 상태로 

할당되어 있는 것을 의미하는 건가요?

그래서 함수의 실행 결과인 리턴값이 없기 때문에 NonType이라고 출력되는 건가요?

계속 (return 부분)을 return averager, return series, 생략 이렇게 넣어서 결과를 출력해보니 값이 다 다르게 나오고, 느낌은 오는데 명확히 정리가 잘 안됩니다 ㅠㅠ

항상 친절한 답변 감사드립니다.

답변 1

답변을 작성해보세요.

1

정확하게 강의를 반복해서 듣는 것을 추천드립니다.

처음에는 어려운 부분입니다.

또는 구글에서 클로저에 대한 검색을 통해서 개념을 읽어보세요