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,,,
** (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.
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
** ▼ 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.
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
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.
python
def hello():
return ("Hallo")
x = hello()
print(type(x))
print(x)
#Ausgabe
<class 'str'>
Hallo
x wird durch die Zeichenfolge "Hallo" ersetzt.
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)
python
def hello(n):
if n > 2:
return ("Hallo")
x = hello(3)
print(type(x))
print(x)
#Ausgabe
<class 'str'>
Hallo
function
def hello():
print("Hallo")
print(hello)
#Ausgabe
<function hello at 0x00000222AE142160>
Funktion zuweisen
def hello():
return ("Hallo")
x = hello #← Keine Klammern erforderlich
print(type(x))
print(x)
#Ausgabe
<class 'function'>
<function hello at 0x00000222AE1423A0>
python
def hello(n):
if n > 2:
return ("Hallo")
x= hello
print(x(3))
#Ausgabe
Hallo
hallo () = x ().
** 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