Ich möchte es hier organisieren, damit ich mich auch im Laufe der Zeit schnell daran erinnern kann.
*
und **
werden an Parameter angehängt, die Argumente variabler Länge empfangen.Ich habe den Code gesehen, der in den Funktionsparametern "* args" und "** kwargs" sagt. Dies wird in einem Parameter beschrieben, der Argumente variabler Länge empfängt, und die Anzahl der Argumente, die beim Aufrufen einer Funktion an den Parameter übergeben werden, kann eine beliebige Zahl anstelle einer festen sein.
Ein Argument mit variabler Länge ermöglicht es Ihnen, eine beliebige Anzahl von Argumenten anzugeben, wobei Sie normalerweise nur eines angeben können.
Beispiel
def kansu(*args):
print(f'{args}Empfangen!')
kansu('Apple', 'Banana', 100)
# ('Apple', 'Banana', 100)Empfangen!
Für nur einen Parameter, args
, habe ich drei Argumente übergeben, aber es funktioniert ohne Fehler.
In einem bekannten Beispiel verwenden die Funktion "print ()" und die Methode ".format ()" auch Argumente variabler Länge.
Sie können so viele Argumente übergeben, wie Sie möchten
print('a','b','c') # a b c
Außerdem werden üblicherweise die Namen "args" und "kwargs" verwendet, sodass Sie einen beliebigen Namen verwenden können.
def x(*z):
y = []
for i in z:
y.append(i*10)
print(y)
x(1,2,3,4,5,6,7,8)
# [10, 20, 30, 40, 50, 60, 70, 80]
Es gibt zwei Arten von Argumenten variabler Länge mit jeweils unterschiedlichen Möglichkeiten zum Übergeben und Empfangen von Argumenten.
* args
empfangen
Erhalten Sie eine beliebige Anzahl von Argumenten in einem Taple (wenn Sie kein Argument übergeben, handelt es sich um ein leeres Tapple).
Positionsargument übergeben * kwargs
erhalten
Erhalten Sie eine beliebige Anzahl von Argumenten der Form "Schlüsselwort = Wert" im Wörterbuchtyp ("Schlüsselwert").
(Wenn Sie kein Argument übergeben, ist es ein leeres Wörterbuch.)
Als Schlüsselwortargument übergebenDurch Hinzufügen von * zum Argument erhält der Parameter ein Positionsargument variabler Länge. Das heißt, es erhält eine beliebige Anzahl von Argumenten. Die Verwendung der Funktion hängt davon ab, wo das Positionsargument variabler Länge im Parameter der Funktion definiert ist.
1.Der letzte Parameter ist die variable Länge
def myfunction(x, y, *z):
print(f'{x} - {y} - {z}')
myfunction(2, 3, 5, 6, 7) # 2 - 3 - (5, 6, 7)
Das erste und das zweite Argument entsprechen "x" bzw. "y". Nachfolgende Argumente entsprechen "z" und werden in Tapples gespeichert.
2.Parameter mit variabler Länge unterwegs
def myfunction(x, *y, z):
print(f'{x} - {y} - {z}')
myfunction(2, 3, 5, 6, 7) # TypeError: myfunction() missing 1 required keyword-only argument: 'z'
Es wird ein Fehler ausgegeben, da keine Argumente an den Parameter z
übergeben wurden. In diesem Fall ist z
ein reines Schlüsselwortargument. Sie müssen also einen Standardwert festlegen oder ihn beim Aufruf als Schlüsselwortargument verwenden.
2-1.Standardwert festlegen
def myfunction(x, *y, z=0):
print(f'{x} - {y} - {z}')
myfunction(2, 3, 5, 6, 7) # 2 - (3, 5, 6, 7) - 0
2-2.Als Schlüsselwortargument verwenden
def myfunction(x, *y, z):
print(f'{x} - {y} - {z}')
myfunction(2, 3, 5, 6, 7, z=0) # 2 - (3, 5, 6, 7) - 0
Durch Hinzufügen von "" zum Argument erhält der Parameter ein Schlüsselwortargument mit variabler Länge. Das heißt, es empfängt eine beliebige Anzahl von "Schlüsselwörtern = Werten", und die Schlüsselwörter und Argumente entsprechen dem Wörterbuchtyp "Schlüssel" bzw. "Wert". Wie Sie die Funktion verwenden, hängt davon ab, wo Sie in den Parametern der Funktion "" definieren.
1.Machen Sie den letzten Parameter zu einem Schlüsselwortargument mit variabler Länge
def myfunction(param1, param2, **param):
print(f'{param1} | {param2} | {param}')
myfunction(2, 3, param3=4, param4=5, param5=6) # 2 | 3 | {'param3': 4, 'param4': 5, 'param5': 6}
Der durch das Schlüsselwortargument mit variabler Länge erhaltene Wert wird zu einem Wörterbuchtyp.
2.Machen Sie den Parameter in der Mitte zu einem Schlüsselwortargument mit variabler Länge
def myfunction(param1, **param, param2):
print(f'{param1} | {param2} | {param}')
Das Ergebnis ist ein Syntaxfehler Es ist nicht zulässig, Schlüsselwortargumente variabler Länge in der Mitte zu definieren.
Normale Parameter nach Parametern, die Positionsargumente variabler Länge erhalten, sind reine Schlüsselwortargumente.
def Test(a, *b, c): #c ist nur für Schlüsselwörter
pass
Nach den Parametern, die Schlüsselwortargumente mit variabler Länge erhalten, dürfen keine regulären Parameter angegeben werden.
05-2.Erneut veröffentlichen
def myfunction(param1, **param, param2):
print(f'{param1} | {param2} | {param}')
Daher muss die Reihenfolge bei gemeinsamer Verwendung wie folgt sein.
1.Parameter, die sowohl Positions- als auch Schlüsselwortargumente erhalten
2.Parameter, die Positionsargumente variabler Länge empfangen
3.Parameter, die nur Schlüsselwortargumente erhalten
4.Parameter, die Schlüsselwortargumente variabler Länge erhalten
Recommended Posts