복붙노트

[PYTHON] TypeError : 'NoneType'객체는 파이썬에서 반복 가능하지 않습니다.

PYTHON

TypeError : 'NoneType'객체는 파이썬에서 반복 가능하지 않습니다.

오류 TypeError : 'NoneType'개체는 반복 할 수없는 것이 무엇입니까?

나는이 파이썬 코드를 사용하고있다.

def write_file(data,filename):   #creates file and writes list to it
  with open(filename,'wb') as outfile:
    writer=csv.writer(outfile)
    for row in data:             ##ABOVE ERROR IS THROWN HERE
      writer.writerow(row)

해결법

  1. ==============================

    1."데이터"는 없음을 의미합니다.

    "데이터"는 없음을 의미합니다.

  2. ==============================

    2.코드 : 데이터 행 : 오류 메시지 : TypeError : 'NoneType'개체를 반복 할 수 없습니다.

    코드 : 데이터 행 : 오류 메시지 : TypeError : 'NoneType'개체를 반복 할 수 없습니다.

    어떤 물음에 대해 불평하고 있습니까? 2, 행 및 데이터 중에서 선택하십시오. In row in 데이터에서 iterable이 필요합니까? 데이터 만.

    데이터의 문제점은 무엇입니까? 유형은 NoneType입니다. None 유형에만 NoneType이 있습니다. 따라서 데이터는 없음입니다.

    IDE에서이를 확인하거나 예를 들어 for "data is", for 문 앞에 repr (data), 다시 실행하십시오.

    다음에해야 할 일에 대해 생각하십시오. "데이터 없음"은 어떻게 표현되어야합니까? 빈 파일을 작성합니까? 우리는 예외를 제기하거나 경고를 기록하거나 침묵을 지키고 있습니까?

  3. ==============================

    3.python2에서 NoneType은 None 유형입니다. Python3에서 NoneType은 None 클래스입니다. 예를 들면 다음과 같습니다.

    python2에서 NoneType은 None 유형입니다. Python3에서 NoneType은 None 클래스입니다. 예를 들면 다음과 같습니다.

    >>> print(type(None))     #Python2
    <type 'NoneType'>         #In Python2 the type of None is the 'NoneType' type.
    
    >>> print(type(None))     #Python3
    <class 'NoneType'>        #In Python3, the type of None is the 'NoneType' class.
    
    for a in None:
        print("k")     #TypeError: 'NoneType' object is not iterable
    
    def foo():
        print("k")
    a, b = foo()      #TypeError: 'NoneType' object is not iterable
    
    a = None 
    print(a is None)              #prints True
    print(a is not None)          #prints False
    print(a == None)              #prints True
    print(a != None)              #prints False
    print(isinstance(a, object))  #prints True
    print(isinstance(a, str))     #prints False
    

    Guido는 신분 확인에 더 강력하기 때문에 None 만 확인하면됩니다. 평등 연산을 사용하지 마십시오. 동등 연산을 사용하면 버블 업 구현 염이 발생할 수 있습니다. 파이썬의 코딩 스타일 가이드 라인 - PEP-008

    import sys
    b = lambda x : sys.stdout.write("k") 
    for a in b(10): 
        pass            #TypeError: 'NoneType' object is not iterable 
    
    a = NoneType     #NameError: name 'NoneType' is not defined
    
    bar = "something"
    foo = None
    print foo + bar    #TypeError: cannot concatenate 'str' and 'NoneType' objects
    

    파이썬의 인터프리터는 코드를 pyc 바이트 코드로 변환했다. 파이썬 가상 머신이 바이트 코드를 처리했을 때, None을 포함하는 변수에 대해 반복을 반복하는 루핑 구문을 발견했습니다. 작업은 None에 __iter__ 메서드를 호출하여 수행되었습니다.

    None은 __iter__ 메쏘드가 정의되어 있지 않으므로 파이썬의 가상 머신은 그것이 무엇인지를 알려줍니다 : NoneType은 __iter__ 메쏘드가 없습니다.

    이것이 파이썬의 오리 타이핑 이데올로기가 나쁜 것으로 간주되는 이유입니다. 프로그래머는 변수와 함께 완전히 합리적으로 뭔가를 수행하며, 런타임에 Python 가상 머신이 군인에게 시도하고 카펫 전체에 관련없는 말도 안되는 것들을 푸크합니다.

    Java 또는 C ++에는 없음이 발생했을 때 수행 할 작업을 정의하지 않았기 때문에 이러한 프로그램을 컴파일 할 수 없기 때문에 이러한 문제가 없습니다. 파이썬은 프로그래머에게 예외적 인 상황 하에서는 작동하지 않아야하는 많은 일을 할 수있게함으로써 교수형에 처하는 많은 로프를 제공합니다. Python은 yes-man입니다. Java 및 C ++과 같이 자신을 해치지 못하도록 막을 때 Yes-sir이라고 말합니다.

  4. ==============================

    4.이 오류를 발생시킬 수있는 또 다른 사항은 함수에서 반환 값과 동일한 값을 설정했지만 실제로 아무것도 반환하지 않은 경우입니다.

    이 오류를 발생시킬 수있는 또 다른 사항은 함수에서 반환 값과 동일한 값을 설정했지만 실제로 아무것도 반환하지 않은 경우입니다.

    예:

    def foo(dict_of_dicts):
        for key, row in dict_of_dicts.items():
            for key, inner_row in row.items():
                Do SomeThing
        #Whoops, forgot to return all my stuff
    
    return1, return2, return3 = foo(dict_of_dicts)
    

    이는 반복 변수 중 하나에서 행 변수가 None이 될 경우에도 오류가 발생할 수 있으므로 찾기가 다소 힘든 오류입니다. 이를 발견하는 방법은 함수 내에서가 아니라 마지막 행에서 추적이 실패하는 것입니다.

    함수에서 하나의 변수 만 반환하는 경우 오류가 생성되는지 확실하지 않습니다 ... " 'NoneType'객체가 Python에서 반복 가능하지 않습니다."이 경우에는 실제로 "이봐, 시도 중입니다. 반환 값을 반복하여이 세 변수에 순서대로 할당 할 수 있습니다. 그러나 "None"을 반복하여 "

  5. ==============================

    5.즉, 데이터 변수가 None (NoneType 유형)을 전달 중이며 아무 것도 해당하지 않습니다. 따라서 목록을 반복 할 수는 없습니다.

    즉, 데이터 변수가 None (NoneType 유형)을 전달 중이며 아무 것도 해당하지 않습니다. 따라서 목록을 반복 할 수는 없습니다.

  6. ==============================

    6.다음과 같은 인수를 사용하여 write_file을 호출합니다.

    다음과 같은 인수를 사용하여 write_file을 호출합니다.

    write_file(foo, bar)
    

    그러나 'foo'를 올바르게 정의하지 않았거나 코드에 오타가있어 새로운 빈 변수가 만들어지고 전달됩니다.

  7. from https://stackoverflow.com/questions/3887381/typeerror-nonetype-object-is-not-iterable-in-python by cc-by-sa and MIT license