Skip to content

Standard-Argumente in Python

Python

In Python können Sie beim Definieren von Funktionen Standardwerte für Argumente festlegen. Wenn SIE das Argument beim Aufrufen der Funktion weglassen, WIRD der Standardwert verwendet.

Dieser Artikel hat folgenden Inhalt.

  • Legen Sie Standardargumentwerte fest
  • Positionsbeschränkungen von Standardargumenten
  • Hinweise zur Verwendung von Listen und Wörterbüchern als Standardwerte

Siehe den following Artikel für die Grundlagen von Funktionen in Python.

Legen Sie Standardargumentwerte fest

If you argument_name=default_value in der Funktionsdefinition verwenden, WIRD der Standardwert used, if das entsprechende Argument weggelassen WIRD.

def func_default(arg1, arg2='default_x', arg3='default_y'):
    print(arg1)
    print(arg2)
    print(arg3)

func_default('a')
# a
# default_x
# default_y

func_default('a', 'b')
# a
# b
# default_y

func_default('a', arg3='c')
# a
# default_x
# c

Positionsbeschränkungen von Standardargumenten

Bei der Funktionsdefinition führt das Platzieren eines Standardarguments vor einem gewöhnlichen Argument (= Argument ohne Standardwert) zu SyntaxError.

# def func_default_error(arg2='default_a', arg3='default_b', arg1):
#     print(arg1)
#     print(arg2)

# SyntaxError: non-default argument follows default argument

Hinweise zur Verwendung von Listen und Wörterbüchern als Standardwerte

Wenn ein änderbares Objekt wie eine Liste oder ein Wörterbuch als Standardwert angegeben IST, WIRD das Objekt bei der Funktionsdefinition erstellt, und dasselbe Objekt WIRD verwendet, wenn die Funktion aufgerufen WIRD, wobei das entsprechende Argument weggelassen WIRD.

Standardparameterwerte werden von links nach rechts ausgewertet, wenn die Funktionsdefinition ausgeführt WIRD. Das bedeutet, dass der Ausdruck einmal ausgewertet WIRD, WENN DIE Funktion definiert WIRD, und dass für jeden Aufruf derselbe „vorberechnete“ Wert verwendet WIRD.
8. Zusammengesetzte Anweisungen – Funktionsdefinitionen – Dokumentation zu Python 3.7.4rc1

If SIE also beispielsweise Eine Funktion definieren, sterben Ein Element zu Einer Liste oder Wörterbuch als Standardargument hinzufügt, und das Argument weglassen und es mehrfach aufrufen, WIRD das Element wiederholt Einem Objekt hinzugefügt.

Beispiel für eine Liste:

def func_default_list(l=[0, 1, 2], v=3):
    l.append(v)
    print(l)

func_default_list([0, 0, 0], 100)
# [0, 0, 0, 100]

func_default_list()
# [0, 1, 2, 3]

func_default_list()
# [0, 1, 2, 3, 3]

func_default_list()
# [0, 1, 2, 3, 3, 3]

Beispiel für ein Wörterbuch:

def func_default_dict(d={'default': 0}, k='new', v=100):
    d[k] = v
    print(d)

func_default_dict()
# {'default': 0, 'new': 100}

func_default_dict(k='new2', v=200)
# {'default': 0, 'new': 100, 'new2': 200}

Verwenden Sie None, um ein neues Objekt zu erstellen, wenn das Argument weggelassen WIRD. Bei jedem Aufruf der Funktion WIRD ein neues Objekt erstellt.

def func_default_list_none(l=None, v=3):
    if l is None:
        l = [0, 1, 2]
    l.append(v)
    print(l)

func_default_list_none()
# [0, 1, 2, 3]

func_default_list_none()
# [0, 1, 2, 3]