Languages/Python2013.09.27 16:30

파이썬 프로그래밍을 하다보면 가끔 'NoneType' object is not iterable 이라는 오류를 만나게 될 때가 있습니다. 물론 이 오류 메시지는 


for i in something:

   ...


위의 코드에서 'something'이 'for'를 적용할 수 없는 객체인 경우에도 만나게 됩니다만, 가끔은 이런 경우에도 만날 수 있습니다. 가령 위의 for 문 안에서 뭔가를 한다고 해 봅시다. 


for i in something:

  ret = do_something(i)

  do_another_something(ret)


그런데 do_something() 메소드 내부 코드가 다음과 같이 구현되어 있다고 해 봅시다.


def do_something(i):

  if some_condition(i):

    return some_result_of_processing(i)


그러니까 이 메소드는 i에 대해서 어떤 조건이 만족되면 뭔가를 리턴하지만, 그 조건이 만족되지 않을 경우에는 아무것도 리턴하지 않습니다. 심지어 None 조차도 리턴하지 않고 있죠. 이런 경우에 종종 for 문 안에서 ret = do_something(i)를 하는 순간 'NoneType' object is not iterable이라는 오류가 발생하곤 합니다.


따라서 위의 do_something 함수처럼 뭔가를 반환해야 하는 함수인데, 아무것도 반환하지 않게 되는 경우가 생기지 않도록 주의해야 되겠습니다. 그렇지 않으면 오류 메시지의 뜻이 무엇인지 해석하는 데 한참 걸리게 될 수 있으니까요.




저작자 표시 비영리 변경 금지
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

  1. guest

    python은 리턴 값이 없으면 None type을 리턴합니다. 그래서 None type은 iteration 할 수 없다고 하는 것이지요...

    2013.12.13 16:47 신고 [ ADDR : EDIT/ DEL : REPLY ]