English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Grundlegende Python-Tutorials

Flow Control in Python

Python Funktion

Python Datentypen

Dateioperationen in Python

Python Objekte und Klassen

Python Datum und Zeit

Fortgeschrittene Kenntnisse in Python

Python Referenzhandbuch

Python Funktionsparameter

Parameter

inBenutzerdefinierte FunktionenIn diesem Artikel haben wir gelernt, wie man Funktionen definiert und aufruft. Unklare Funktionsaufrufe können unvorhersehbare Fehler verursachen. Hier ist ein Beispiel.

def greet(name, msg):
    """Das ist eine Funktion, um jemanden zu begrüßen"""
    Es gibt die Parameter name, msg
    print("Hallo", name + ', '' + msg)
greet("Monica", "guten Morgen!")

Ausgaberesultat

Hallo Monica, guten Morgen!

Die Funktion greet() hat zwei Parameter.

Da wir die Funktion bereits mit zwei Parametern aufgerufen haben, läuft sie normal und wir sehen keine Fehler.

Wenn es mit verschiedenen Anzahl an Parametern aufgerufen wird, zeigt der Interpreter eine Fehlermeldung an. Hier ist der Aufruf dieser Funktion, der zeigt, wie sie mit einem Parameter und ohne Parameter aufgerufen wird, und die Fehlermeldungen, die sie nach dem Ausführen auswerfen.

>>> greet("Monica")    # 只给传一个参数
>>> greet() # Keine Parameter übergeben 1 required positional argument: 'msg'
>>> greet("Monica") # Nur ein Parameter übergeben
>>> greet() # Keine Parameter übergeben 2 TypeError: greet() fehlt

erforderliche positionale Argumente: 'name' und 'msg'

Variablen Anzahl von Funktion 参数

Bis jetzt haben Funktionen eine festgelegte Anzahl von Parametern. In Python gibt es auch andere Methoden, um Funktionen mit variablen Anzahl von Parametern zu definieren.

Python Standardparameter

In Python können Funktion参数 Standardwerte haben.

Wir können den Zuweisungsoperator (=) verwenden, um Standardwerte für Parameter bereitzustellen. Hier ist ein Beispiel.

def greet(name, msg = "Guten Morgen!"):
    """
    Diese Funktion begrüßt diejenigen, die die Nachricht liefern.
    wenn keine Nachricht übergeben wird,
    dann ist es "Guten Morgen!"
    """
    print("Hallo", name + ', '' + msg)
greet("Zhang San")
greet("Li Si", "Wie geht es dir?")

Ausgaberesultat

Hallo, Zhang San, guten Morgen!
Hallo, Li Si, wie geht es dir?

In dieser Funktion hat der Parameter name keinen Standardwert, daher muss der Parameter name bei der Aufrufung der Funktion unbedingt ein Wert übergeben werden (verpflichtend).

Andererseits hat der Parameter msg den Standardwert "Good morning!", daher kann bei der Aufrufung der Funktion kein Wert übergeben werden. Wenn ein Wert übergeben wird, wird der Standardwert überschrieben.

Jeder Parameter in einer Funktion kann eine Standardwert haben. Aber sobald es Standardwerte gibt, müssen alle Parameter auf der rechten Seite auch Standardwerte haben.

Das bedeutet, dass nicht-standardisierte Parameter nicht den Standardparametern folgen können. Zum Beispiel, wenn wir den Header der obigen Funktion so definieren:

def greet(msg = "Good morning!", name):

Wir erhalten die folgende Fehlermeldung:

SyntaxError: non-default argument follows default argument

Python-Schlüsselparameter

Wenn wir eine Funktion mit bestimmten Werten aufrufen, werden diese Werte entsprechend ihrer Position den Parametern zugewiesen.

Zum Beispiel, im obigen Funktion gret(), wenn wir sie als gret("Bruce", "How do you do?") aufrufen, wird der Wert "Bruce" dem Parameter zugewiesennameUnd "How do you do?" wurde der Variable msg zugewiesen.

Python ermöglicht es, Funktionen mit Schlüsselwortparametern aufzurufen. Wenn wir Funktionen auf diese Weise aufrufen, kann die Reihenfolge der Parameter (Position) geändert werden. Alle nachfolgenden Aufrufe dieser Funktion sind gültig und erzeugen das gleiche Ergebnis.

# 2Keyword-Parameter
greet(name = "Bruce", msg = "How do you do?")
# 2Keyword-Parameter, Parameterreihenfolge geändert
greet(msg = "How do you do?", name = "Bruce") 
#1 Positionalparameter, 1 Keyword-Parameter
greet("Bruce", msg = "How do you do?")

Wie wir sehen können, können wir während des Funktionsaufrufs Positional- und Keyword-Parameter mischen. Wir müssen jedoch daran denken, dass Keyword-Parameter den Positionalparametern folgen müssen.

Das Platzieren von Positionalparametern nach Keyword-Parametern führt zu einem Fehler. Zum Beispiel sieht die Funktionsaufruf so aus:

greet(name="Bruce","How do you do?")

führt zu einem Fehler:

SyntaxError: non-keyword arg after keyword arg

Python variabler Parameter

Manchmal wissen wir im Voraus nicht, wie viele Parameter an die Funktion übermittelt werden sollen. Python ermöglicht es uns, diese Situation durch eine Funktion mit variabler Anzahl von Parametern zu behandeln.

In der Funktionsdefinition verwenden wir vor den Parameternnamen einen Stern (*)zeigt solche Parameter an. Dies ist ein Beispiel.

def greet(*names):
    """Diese Funktion begrüßt die folgenden Adressaten:
        Jeder in der Tuple-Liste. """
    # Name ist ein Tuple mit Parametern
    for name in names:
        print("Hallo", name)
greet("Monica", "Luke", "Steve", "John")

Ausgaberesultat

Hallo Monica
Hallo Luke
Hallo Steve
Hallo John

Hier haben wir eine Funktion mit mehreren Parametern aufgerufen. Diese Parameter werden vor der Übermittlung an die Funktion in einem Tuple verpackt. Innerhalb der Funktion verwenden wir einen for-Schleifen, um alle Parameter abzurufen.