Je voudrais l'organiser ici pour que je puisse m'en souvenir rapidement même si le temps passe.
J'ai vu le code qui dit «* args» et «** kwargs» dans les paramètres de la fonction. Ceci est décrit dans un paramètre qui reçoit des arguments de longueur variable, et le nombre d'arguments passés au paramètre lors de l'appel d'une fonction peut être n'importe quel nombre au lieu d'être fixe.
Un argument de longueur variable est celui qui vous permet de spécifier n'importe quel nombre d'arguments où vous ne pouvez généralement en spécifier qu'un.
Exemple
def kansu(*args):
print(f'{args}Reçu!')
kansu('Apple', 'Banana', 100)
# ('Apple', 'Banana', 100)Reçu!
En ce qui concerne le paramètre, j'ai passé 3 arguments pour seulement 1 «args», mais cela fonctionne sans erreur.
Dans un exemple familier, la «fonction print ()» et la «méthode .format ()» utilisent également des arguments de longueur variable.
Vous pouvez passer autant d'arguments que vous le souhaitez
print('a','b','c') # a b c
De plus, les noms «args» et «kwargs» sont habituellement utilisés, vous pouvez donc utiliser n'importe quel nom.
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]
Il existe deux types d'arguments de longueur variable, chacun avec des manières différentes de passer et de recevoir des arguments.
* args
Recevez n'importe quel nombre d'arguments dans un taple (si vous ne passez pas d'argument, ce sera un tapple vide)
Passer par argument de position * kwargs
Recevoir n'importe quel nombre d'arguments de la forme mot-clé = valeur
dans le type de dictionnaire ( valeur clé
)
(Si vous ne passez pas d'argument, ce sera un dictionnaire vide)
Passer comme argument de mot-cléEn ajoutant «*» à l'argument, le paramètre recevra un argument de position de longueur variable. Autrement dit, il reçoit n'importe quel nombre d'arguments. L'utilisation de la fonction dépend de l'endroit où l'argument de position de longueur variable est défini dans le paramètre de la fonction.
1.Le dernier paramètre est la longueur variable
def myfunction(x, y, *z):
print(f'{x} - {y} - {z}')
myfunction(2, 3, 5, 6, 7) # 2 - 3 - (5, 6, 7)
Les premier et second arguments correspondent respectivement à "x" et "y". Les arguments suivants correspondent à «z» et sont stockés dans des tapples.
2.Paramètres de longueur variable en cours de route
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'
Il renvoie une erreur car aucun argument n'a été passé au paramètre z
. Dans ce cas, z
est un argument de mot-clé uniquement, vous devez donc définir une valeur par défaut ou l'utiliser comme argument de mot-clé lors de l'appel.
2-1.Définir la valeur par défaut
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.Utiliser comme argument de mot-clé
def myfunction(x, *y, z):
print(f'{x} - {y} - {z}')
myfunction(2, 3, 5, 6, 7, z=0) # 2 - (3, 5, 6, 7) - 0
En ajoutant «» à l'argument, le paramètre reçoit un argument de mot-clé de longueur variable. Autrement dit, il reçoit n'importe quel nombre de «mots-clés = valeurs», et les mots-clés et arguments correspondent respectivement à la clé de type dictionnaire et à la «valeur». L'utilisation de la fonction dépend de l'endroit où vous définissez «» dans les paramètres de la fonction.
1.Faire du dernier paramètre un argument de mot-clé de longueur variable
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}
La valeur obtenue par l'argument de mot-clé de longueur variable devient un type de dictionnaire.
2.Faire du paramètre au milieu un argument de mot-clé de longueur variable
def myfunction(param1, **param, param2):
print(f'{param1} | {param2} | {param}')
Le résultat est une erreur de syntaxe Il n'est pas permis de définir des arguments de mot-clé de longueur variable au milieu.
Les paramètres normaux après les paramètres qui reçoivent des arguments de position de longueur variable sont des arguments de mots clés uniquement.
def Test(a, *b, c): #c est pour les mots clés uniquement
pass
Il ne peut y avoir aucun paramètre régulier après les paramètres qui reçoivent des arguments de mot-clé de longueur variable.
05-2.Republier
def myfunction(param1, **param, param2):
print(f'{param1} | {param2} | {param}')
Par conséquent, lorsqu'ils sont utilisés ensemble, la commande doit être la suivante.
1.Paramètres qui reçoivent à la fois des arguments positionnels et des mots-clés
2.Paramètres qui reçoivent des arguments de position de longueur variable
3.Paramètres qui reçoivent des arguments de mots clés uniquement
4.Paramètres qui reçoivent des arguments de mot-clé de longueur variable
Recommended Posts