3 Stimmen

Python list.append als Argument

Warum gibt der folgende Code 'None' aus? Wie kann ich das beheben?

def f1(list1):
    f2(list1.append(2))

def f2(list1):
    print(list1)

f1([1])

Was auch nicht funktioniert:

def f1(list1):
    arg1 = list1.append(2) 
    f2(arg1)

7voto

unutbu Punkte 769083

Im Allgemeinen geben Python-Methoden, die ein Objekt verändern (wie list.append, list.extend oder list.sort), None zurück.

Wenn Sie die neue Liste ausgeben möchten:

def f1(list1):    
    list1.append(2)
    f2(list1)

6voto

Tim Pietzcker Punkte 311448

Es kommt darauf an, was du tun möchtest. Wenn du möchtest, dass list1 nach einem Aufruf von f1 geändert wird, verwende

def f1(list1):
    list1.append(2)
    f2(list1)

Schau dir an, was passiert:

>>> l = [1]
>>> f1(l)       # Ändert l direkt!
[1, 2]
>>> l
[1, 2]

Wenn du nicht möchtest, dass list1 geändert wird:

def f1(list1):
    f2(list1 + [2])

Schau dir nun das an:

>>> l = [1]
>>> f1(l)       # Lässt l unverändert!
[1, 2]
>>> l
[1]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X