본문 바로가기
카테고리 없음

[파이썬] TypeError: 'NoneType' object is not iterable 오류

by 꼬마낙타 2020. 3. 14.
반응형

파이썬 프로그램을 작성하다가 가끔씩 타입 관련된 에러메시지를 만나곤 합니다. 그 중 하나가 `TypeError: 'NoneType' object is not iterable` 에러입니다. 객체가 iterable 하지 않다는 에러입니다. 

이 에러를 재현할 수 있는 파이썬 코드는 다음과 같습니다.

def function1(param1):
    if param1 == 1:
        return "abc"
    elif param2 == 2:
        return "def"
    elif param2 == 3:
        return "ghi"


value = 1

for char in function1(value):
    print(char)

이 코드를 실행하면

a
b
c

이런 실행 결과를 얻게 됩니다.

value 변수의 값을 1, 2, 3이 아닌 값으로 지정한 경우

TypeError: 'NoneType' object is not iterable

에러를 만나게 됩니다.

function1() 함수에서 명시적으로 값을 리턴하지 않은 경우 None이라는 값을 리턴하게 되는데요. 위 코드의 경우 파라미터로 1, 2, 3 중에 하나를 입력한 경우 문자열 값이 리턴되지만 그 외의 값을 입력한 경우 명시적으로 리턴값이 없어 None이 리턴됩니다.

문제는 이 때 리턴된 None 값을 반복문에서 iterable 하게 사용하려고 한 곳에서 발생했습니다.

함수에서 리턴해주는 값을 사용할 때, None이 리턴될 수 있는지 확인하고 명시적인 리턴문이 없는 경우엔 None이 리턴될 수 있음을 인지하고 사용하시기 바랍니다.

반응형

댓글