[Python] Typfehler: Zusammenfassung der Ursachen und Abhilfemaßnahmen für 'Kein Typ'

[Python] Typfehler: 'NoneType'-Objekt ist nicht iterierbar Ursache und Abhilfe

Ich war süchtig danach, eine rekursive Funktion zu schreiben, also wie ich damit umgehen soll.

Fehler aufgetreten


TypeError: 'NoneType' object is not iterable

Darüber hinaus ist es auch nützlich für die Ursachen und Gegenmaßnahmen allgemeiner Fehler, einschließlich "None Tpye".

Andere Fehlerbeispiele


・ Kann Liste nur verketten(not "NoneType") to list
· Können't multiply sequence by non-int of type 'NoneType'
・ Nicht unterstützter Operandentyp(s) for +: 'NoneType' and 'list'
Eine solche,,,

Es gibt zwei Schlussfolgerungen.

** (1) Das Ausführungsergebnis einer Funktion ohne Rückgabewert ist "Wert Keine, Typ Keine Typ". ** ** **

** ② Wenn Sie einer Variablen eine Funktion zuweisen, muss die Funktion eine Rückgabe haben. ** ** ** └ Nicht drucken. (Weil es nicht das Ausführungsergebnis ist, sondern ein Prozess mitten in der Ausführung) └ return sollte die endgültige Ausgabe der Funktion sein. └ Es reicht nicht aus, dass es irgendwo in der Funktion eine Rückgabe gibt.

Ereignisstatus

Tritt auf, wenn versucht wird, ein int aus einem mehrdimensionalen Array zu extrahieren.

Error


arr0 = [1,[2],[[3]]]

def number(arr):
    result=[]
    
    if isinstance(arr, int):
        result.append(arr)
    
    if isinstance(arr, list):
        #Elemente einzeln extrahieren
        for brr in arr:
            res = number(brr)
            result += res  #← Hier ist ein Fehler
        return result
            
number(arr0)

#Ausgabe
TypeError: 'NoneType' object is not iterable

## Problem Verursacht durch den Versuch, mit einem Objekt von 'NooneType' herumzuspielen.

** ▼ Etwas detaillierter ** Die Funktionsnummer () wird der Variablen mit "res = number (brr)" zugewiesen. Da jedoch in dieser Funktion selbst kein Rückgabewert vorhanden ist, wird None in der Variablen gespeichert und der Typ ist NoneType.

"Ergebnis + = res" Weil ich versucht habe, diese NoneType-Variable res mit dem Ergebnis der Listentypvariablen zu kombinieren.

Es wird gesagt, dass res nicht kombiniert werden kann, weil es nicht iterierbar ist.

Was ist NoneTpye?

Ein Fehler, der auftritt, wenn keine Standardargumente an die Funktion übergeben werden. Der Wert ist nur Keine.

Was ist (Python offiziell) Keine Der einzige Wert vom Typ NoneType. Keiner wird häufig verwendet, um das Fehlen eines Werts anzuzeigen, z. B. wenn kein Standardargument an die Funktion übergeben wird. Die Zuweisung zu None ist ungültig und löst einen SyntaxError aus.

** ▼ Es sieht so aus ** Wenn das Ausführungsergebnis der Funktion leer ist, wird das Ergebnis selbst zu NoneType.

Wenn Sie einer Variablen eine Funktion zuweisen, deren Ausführungsergebnis leer ist, wird sie daher zu NoneType.

NoneTpye Beispiel


def hello():
    pass

x = hello()
print(type(x))
print(x)

#Ausgabe
<class 'NoneType'>
None

#### Selbst beim Drucken wird es zu None Type

Keine Typ zum Drucken


def hello():
    print("Hallo")

x = hello()
print(type(x))

#Ausgabe
Hallo
<class 'NoneType'>

Die Ausgabe lautet "Hallo", wird jedoch im Ausführungsprozess der Funktion angezeigt, ersetzt jedoch nicht die Funktion selbst.


### Abhilfe (Installation der Rücksendung) Um es nicht auf NoneType zu setzen, gibt return der Funktion den tatsächlichen Zustand. └ Der Rückgabewert ersetzt das Ergebnis der Ausführung der Funktion durch die Funktion selbst.

python


def hello():
    return ("Hallo")

x = hello()
print(type(x))
print(x)

#Ausgabe
<class 'str'>
Hallo

x wird durch die Zeichenfolge "Hallo" ersetzt.

Ort der Rückgabe

Dies bedeutet nicht, dass eine oder mehrere Rückgaben in der Funktion erforderlich sind. Es ist wichtig, dass eine Rückgabe als Endergebnis der Ausführung zurückgegeben wird.

▼ Ein Beispiel, in dem die Rückgabe beschrieben wird, jedoch zu None Type wird

Beispiel für das Werden von None Type


def hello(n):
    if n > 2:
        return ("Hallo")

x = hello(1)
print(type(x))
print(x)

#Ausgabe
<class 'NoneType'>
None

Da 1 <2 ist, ist das Ausgabeergebnis der Funktion leer. (Durchläuft den Rückgabeprozess nicht)


▼ OK, wenn das Ausführungsergebnis zurückgegeben wird

python


def hello(n):
    if n > 2:
        return ("Hallo")

x = hello(3)
print(type(x))
print(x)

#Ausgabe
<class 'str'>
Hallo

## Ergänzung #### ▼ Der Typ der Funktion selbst ist Funktion

function


def hello():
    print("Hallo")

print(hello)

#Ausgabe
<function hello at 0x00000222AE142160>

▼ Klammern sind nicht erforderlich, wenn Sie die Funktion selbst einer Variablen zuweisen

Funktion zuweisen


def hello():
    return ("Hallo")

x = hello  #← Keine Klammern erforderlich
print(type(x))
print(x)

#Ausgabe
<class 'function'>
<function hello at 0x00000222AE1423A0>

▼ Beispiel für die Ausführung von Variablen (Zuweisung von Funktionen)

python


def hello(n):
    if n > 2:
        return ("Hallo")
    
x= hello
print(x(3))

#Ausgabe
Hallo

hallo () = x ().


## Aktionsergebnis Der am Anfang beschriebene Fehlercode wurde korrigiert.

** Setzen Sie return entsprechend, damit der der Variablen zugewiesene Wert keine Funktion wird. ** ** **

python


def number(arr):
    result=[]
    
    if isinstance(arr, int):
        result.append(arr)
    
    if isinstance(arr, list):
        #Elemente einzeln extrahieren
        for brr in arr:
            res = number(brr)
            result += res
    return result  #← Ergebnis als Rückgabewert der Funktionsnummer festlegen

Es hat sicher funktioniert.

Recommended Posts

[Python] Typfehler: Zusammenfassung der Ursachen und Abhilfemaßnahmen für 'Kein Typ'
Zusammenfassung der Python-Indizes und -Slices
Zusammenfassung der Korrespondenz zwischen Ruby- und Python-Array-Operationen
Zusammenfassung der Unterschiede zwischen PHP und Python
Installation von Python 3 und Flask [Zusammenfassung der Umgebungskonstruktion]
E / A-bezogene Zusammenfassung von Python und Fortan
[Python] Klassentyp und Verwendung des datetime-Moduls
Zusammenfassung der Python-Argumente
Zusammenfassung der Python-Sortierung (Liste, Wörterbuchtyp, Serie, DataFrame)
Python - Erläuterung und Zusammenfassung der Verwendung der 24 wichtigsten Pakete
Zusammenfassung der Datumsverarbeitung in Python (Datum / Uhrzeit und Datum)
Zusammenfassung der Python-Dateivorgänge
Zusammenfassung der Python3-Listenoperationen
Python --Überprüfen Sie den Wertetyp
Python-Datentyp-Zusammenfassungsnotiz
Quellinstallation und Installation von Python
[Python] Zusammenfassung zum Abrufen von Listen und Wörterbuchelementen
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Zusammenfassung der Unterstützung von Hash-Operationen (Dictionary) für Ruby und Python
Hinweis zur Unterstützung von Python-Fehlern: "... unterstützt kein Argument 0 vom Typ float ..."
Die Geschichte von Python und die Geschichte von NaN
Installation von SciPy und matplotlib (Python)
Eine kurze Zusammenfassung der Python-Sammlung
[Python] Woche 1-3: Nummerntyp und Operation
Dies und das von Python-Eigenschaften
Zusammenfassung der Unterschiede zwischen Python und PHP (Vergleichstabelle der Hauptelemente)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Seltsame und schreckliche Python-Fehlergeschichte
Ich habe keine Angst mehr vor Fehlern! Python-Fehler und ihre Ursachen / Lösungen
Reputation von Python-Büchern und Nachschlagewerken
[OpenCV; Python] Zusammenfassung der Funktion findcontours
[Python] Zusammenfassung der Konvertierung zwischen Zeichenfolgen und numerischen Werten (ASCII-Code)
Installation von Visual Studio Code und Installation von Python
[Python] Zusammenfassung der Verwendung von Pandas
Extraktion von tweet.js (json.loads und eval) (Python)
pix2pix tensorflow2 Aufzeichnung von Versuch und Irrtum
Zusammenfassung verschiedener for-Anweisungen in Python
Verbinde viel Python oder und und
[Python2.7] Zusammenfassung der Verwendung von unittest
[Python] [Meta] Ist der Python-Typ ein Typ?
Zusammenfassung der Module und Klassen in Python-TensorFlow2-
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Zusammenfassung nützlicher Techniken von Scrapy in Python
Zusammenfassung der Verwendung der Python-Liste
Einfache Einführung in die Python3-Serie und OpenCV3
[Python] Verschiedene Kombinationen von Zeichenketten und Werten
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Vererbung zwischen numerischen Python- und NumPy-Typen
Zusammenfassung der Achsenoptionsspezifikation von Python "numpy.sum (...)"
Gleiche Automatisierung des Python- und PyPI-Setups
Vollständiges Verständnis von Python-Threading und Multiprocessing
Zusammenfassung der Analyse von Python-URLs und Abfrageparametern
[AWS] Zusammenfassung der Gegenmaßnahmen gegen CLI-Installationsfehler
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
Python-Zusammenfassung
[Python] Erstellen Sie eine Liste mit Datum und Uhrzeit (Datum / Uhrzeit-Typ) für einen bestimmten Zeitraum
Python-Zusammenfassung
[Python] Verwendung von zwei Arten von type ()
Zusammenfassung zum Importieren von Dateien in Python 3