Funktion, ein allgemeines Substantiv, das eine Unterroutine darstellt. In einigen Programmiersprachen bezieht es sich auf eine Unterroutine oder Anweisung, die einen Wert zurückgibt. Spielt in einigen Programmiersprachen die Rolle eines Schlüsselworts.
In Python ist die Funktion sehr wichtig und üblich, im Allgemeinen das Abrufen von Parameterinformationen einer Klasse oder Funktion.
In Python fallen Funktionen im Allgemeinen in die folgenden Kategorien:
1. POSITIONAL_OR_KEYWORD
Wenn keine *-Deklaration vorhanden ist , dann ist es vom Typ POSITIONAL_OR_KEYWORD. Genau wie die Semantik können Parameter vom Typ POSITIONAL_OR_KEYWORD durch Übergabe von Parametern in Position POSITIONAL oder durch Übergabe von Parametern im Schlüsselwort KEYWORD aufgerufen werden. Das Folgende ist das einfachste Beispiel:
def foo(a): pass # 位置传参调用 foo(1) # 关键字传参调用 foo(a=1)
2. VAR_POSITIONAL
Der zweite ist ein variabler Positionsparameter, der durch ein *-Präfix deklariert wird Funktionsparameterdeklaration (kein Funktionsaufruf! Deklaration und Aufruf haben zwei unterschiedliche Bedeutungen), sie müssen vom Typ VAR_POSITIONAL sein. Genau wie Semantik können Parameter dieses Typs nur über Positionsparameter aufgerufen werden. Das Schlüsselwort KEYWORD wird für Parameter nicht unterstützt Innerhalb der Funktion werden die Parameter vom Typ VAR_POSITIONAL als Tupel angezeigt. Zu beachten ist, dass der Typ VAR_POSITIONAL ohne Übergabe eines Parameters aufgerufen werden kann und nur einer vorhanden sein darf. Das Folgende ist ein einfaches Beispiel:
def foo(*b): print(b) # 不传参数不会报错,参数值是一个空元祖 foo() # 结果是 () # 可以传入任意个位置参数调用 foo(1, 2.0, '3', True) #结果是 (1, 2.0, '3', True)
3. KEYWORD_ONLY
Dieser Parameter steht nur nach dem Typparameter VAR_POSITIONAL und nicht mit ** Präfix. Genau wie bei der Semantik kann diese Art von Parametern nur mit dem Schlüsselwort KEYWORD und nicht mit Positionsparametern übergeben werden, da alle Positionsparameter von den vorherigen Parametern vom Typ VAR_POSITIONAL empfangen wurden, sodass KEYWORD_ONLY Parameterwerte nur über das Schlüsselwort empfangen kann. Das Folgende ist ein einfaches Beispiel:
# VAR_POSITIONAL不需要使用时,可以匿名化 def foo(*, c): pass # 只能关键字传参调用 foo(c=1)
Vier. VAR_KEYWORD
Der vierte Typ sind variable Schlüsselwortparameter, die mit dem Präfix ** deklariert werden. Kein Funktionsaufruf! Deklaration und Aufruf haben zwei verschiedene Bedeutungen. Wie die Semantik kann dieser Parametertyp nur über das Schlüsselwort KEYWORD aufgerufen werden, kann jedoch eine beliebige Anzahl von Schlüsselwortparametern empfangen, sogar 0 Parameter, und wird als Wörterbuch (Dikt) innerhalb der Funktion angezeigt. Es ist nur ein Parameter vom Typ VAR_KEYWORD zulässig und dieser darf nur am Ende der Funktion deklariert werden. Das Folgende ist ein einfaches Beispiel:
def foo(**d): print(d) # 不传参数不会报错,参数值是一个空字典 foo() # 结果是 {} # 可以传入任意个关键字参数调用 foo(a=1, b=2.0, c='3', d=True) # 结果是 {'d': True, 'c': '3', 'b': 2.0, 'a': 1}
5. POSITIONAL_ONLY
Der fünfte Typ ist der letzte, weil er überhaupt nicht wichtig ist und gehört zu Python. Mit Hilfe von Ipython können Sie immer noch die Init-Signatur sehen: dict(self, /, *args, **kwargs), wobei self der Positionsparameter POSITIONAL_ONLY ist. Vertrauen Sie mir, Sie müssen es nicht verwenden. Python empfiehlt stattdessen die Verwendung von VAR_POSITIONAL. Hier ist ein umfassendes Beispiel:
import inspect def foo(a, *b, c, **d): pass for name, parame in inspect.signature(foo).parameters.items(): print(name, ': ', parame.kind)
Standardparameter
VAR-Typen erlauben keine Festlegung von Standardparametern
POSITIONAL_OR_KEYWORD und KEYWORD_ONLY können Standardparameter anpassen, während VAR_POSITIONAL und VAR_KEYWORD erlauben keine Anpassung der Standardparameter, da der Standardparameter von VAR_POSITIONAL ein leeres Tupel von tuple() ist, während der Standardparameter von VAR_KEYWORD ein leeres Wörterbuch von dict() ist. Wenn Sie die Standardparameter anpassen, müssen Sie beim Aufruf der Funktion keine Parameter übergeben. Wenn der Standardwert leer ist, müssen Sie vor dem Aufruf Parameter übergeben.
Speicherort der Standardparameter
Die Standardparameter vom Typ POSITIONAL_OR_KEYWORD müssen hinten platziert werden, andernfalls wird ein Fehler gemeldet, obwohl KEYWORD_ONLY nicht obligatorisch ist, da dies der Fall ist wird mithilfe von Schlüsselwörtern weitergegeben. Es spielt keine Rolle, wer zuerst kommt, aber es ist am besten, es so weit wie möglich nach hinten zu stellen.
Die Standardparameter sind nicht Standard?
Standardparameter dürfen nicht auf Variablentypen (z. B. Liste, Diktat, Satz) festgelegt werden. Wenn Sie die Standardparameter innerhalb der Funktion ändern, ist dies beim nächsten Mal nicht mehr der Standardwert Nenn es.
Richtiges Beispiel:
def foo(p1, p2=2.0, *, k1, k2=None): a_list = k2 or list() pass foo(1, k1='3')
Das obige ist der detaillierte Inhalt vonWas bedeutet Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!