[Python] * args ** Qu'est-ce que kwrgs?

01. Quoi écrire dans cet article

Je voudrais l'organiser ici pour que je puisse m'en souvenir rapidement même si le temps passe.

02. «*» et «**» sont attachés aux paramètres qui reçoivent des arguments de longueur variable.

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]

03. Différence entre quand «*» est un et quand il est deux

Il existe deux types d'arguments de longueur variable, chacun avec des manières différentes de passer et de recevoir des arguments.

    1. Paramètres qui reçoivent des arguments positionnels de longueur variable <- * 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
  1. Paramètres qui reçoivent des arguments de mot-clé de longueur variable <- * 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é

04. Comment utiliser les paramètres qui reçoivent des arguments de longueur variable «position»

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

05. Comment utiliser des arguments de longueur variable pour les mots clés

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.

06. Lors de l'utilisation simultanée de deux arguments de longueur variable

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

[Python] * args ** Qu'est-ce que kwrgs?
Qu'est-ce que python
Qu'est-ce que Python
[Python] Qu'est-ce que Pipeline ...
[Python] Qu'est-ce que virtualenv
[Python] Python et sécurité-① Qu'est-ce que Python?
Cours de base Python (1 Qu'est-ce que Python)
[Python] Qu'est-ce qu'une fonction zip?
[Python] Qu'est-ce qu'une instruction with?
[Python] Qu'est-ce que @? (À propos des décorateurs)
[python] Quelle est la clé triée?
Python pour la déclaration ~ Qu'est-ce qui est itérable ~
À quoi sert le trait de soulignement Python (_)?
Python> Qu'est-ce qu'une tranche étendue?
Qu'est-ce que l'espace de noms
Qu'est-ce que copy.copy ()
[Python] Qu'est-ce que la série pandas et DataFrame?
[Python] Qu'est-ce qui est hérité par l'héritage multiple?
Qu'est-ce que NaN? NaN Zoya (Python) (394 jours de retard)
Python est facile
Qu'est-ce que Django? .. ..
Qu'est-ce que dotenv?
Qu'est-ce que POSIX
Quel type de langage de programmation est Python?
Qu'est-ce que le klass?
Qu'est-ce que SALOME?
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Qu'est-ce qu'un chien? Volume d'installation Python
Qu'est-ce que Linux?
Qu'est-ce que l'hyperopt?
Python est une instance
Qu'est-ce que Linux
Qu'est-ce que pyvenv
Qu'est-ce que __call__
Qu'est-ce que Linux
Qu'est-ce qu'un algorithme? Introduction à l'algorithme de recherche] ~ Python ~
Qu'est-ce que la «programmation fonctionnelle» et «orientée objet»? Édition Python
Qu'est-ce que wheezy dans l'image Docker Python?
J'ai essayé Python! ] Diplômé aujourd'hui de "Tout le monde Python! Qu'est-ce que Python!"!
Que comparez-vous avec Python et ==?
[Introduction à l'application Udemy Python3 +] 54. Qu'est-ce que Docstrings?
Que sont les taples et * args python après tout?
Dites-moi ce qu'est une cartographie équiangulaire, Python!
Qu'est-ce qu'une distribution?
Qu'est-ce que le F-Score de Piotroski?
Qu'est-ce que Raspberry Pi?
Qu'est-ce que Calmar Ratio?
Qu'est-ce qu'un terminal?
[Tutoriel PyTorch ①] Qu'est-ce que PyTorch?
Qu'est-ce que le réglage des hyper paramètres?
Qu'est-ce qu'un hacker?
Qu'est-ce que JSON? .. [Remarque]
À quoi sert Linux?
Qu'est-ce qu'un pointeur?
Qu'est-ce que l'apprentissage d'ensemble?
Qu'est-ce que TCP / IP?
Qu'est-ce que __init__.py de Python?
Qu'est-ce qu'un itérateur?
Qu'est-ce que UNIT-V Linux?