[PYTHON] Remarques sur les * args et ** kargs

Je l'oublie souvent, alors prenez note.

Argument de longueur variable

Si * args est spécifié comme argument, il recevra un nombre arbitraire d'arguments et deviendra un taple.

>>> def func(a, b, *args):
...     print('a: {}'.format(a))
...     print('b: {}'.format(b))
...     print('*args: {}'.format(args))
...
>>> func(1, 2, 3, 4, 5, 6)
a: 1
b: 2
*args: (3, 4, 5, 6)

Si vous spécifiez ** kargs comme argument, vous pouvez recevoir n'importe quel nombre d'arguments de mot-clé et l'utiliser comme dictionnaire.

>>> def func(a, b, **kargs):
...     print('a: {}'.format(a))
...     print('b: {}'.format(b))
...     print('**kargs: {}'.format(kargs))
...
>>> func(1, 2, x=3, y=4, z=5)
a: 1
b: 2
**kargs: {'z': 5, 'x': 3, 'y': 4}

Affectation de déballage

Si vous ajoutez «*» à la liste et que vous le passez à l'argument, il sera décompressé et assigné à l'argument.

>>> args = [1, 2, 3]
>>> def func(a, b, c):
...     return a + b + c
...
>>> func(*args)
6

Si vous ajoutez «**» au dictionnaire et que vous le passez à l'argument, il sera décompressé et assigné à l'argument.

>>> kargs = {'a': 3, 'b': 4, 'c': 5}
>>> def func(a, b, c):
...     return a + b + c
...
>>> func(**kargs)
12

Une telle chose

>>> args = [3, 4, 5]
>>> def func(a, b, *args):
...     print('a: {}'.format(a))
...     print('b: {}'.format(b))
...     print('*args: {}'.format(args))
...
>>> func(1, 2, *args)
a: 1
b: 2
*args: (3, 4, 5)

Il est décompressé en le passant à l'argument avec * args, et la fonction le reçoit comme un argument de longueur variable, donc il devient une liste. C'est une histoire que vous pouvez donner sous forme de liste depuis le début, mais vous pouvez aussi le faire.

Site de référence

* args ** Signification de kwargs

Recommended Posts

Remarques sur les * args et ** kargs
Notes sur pyenv et Atom
Notes sur Python et les types de dictionnaire
Remarques sur l'utilisation de la post-réception et de la post-fusion
Notes sur Flask
Remarques sur la construction de Python et pyenv sur Mac
Remarques sur l'installation de Python3 et l'utilisation de pip sous Windows7
Remarques sur les réseaux de neurones
Notes de céleri sur Django
Remarques sur l'installation de PycURL
Remarques sur l'utilisation d'Alembic
Remarques sur les fonctions de la famille SciPy.linalg
Remarques et conseils sur l'assemblage vertical de PySpark DataFrame
Remarques sur le traitement d'images HDR et RAW avec Python
Notes sur la construction de TinyEMU et le démarrage du noyau Linux sur Emscripten
Python sur Ruby et Ruby en colère sur Python
Remarques sur l'installation de dlib sur Mac
Notes sur le module sqlite3 de python
python * args, ** kwargs Notes d'utilisation
Remarques sur la définition des slots PySide (2)
[Django] Remarques sur l'utilisation de django-debug-toolbar
Enregistrement et lecture sous Linux
Précautions lors de la définition des emplacements pour PySide
[Python] Notes sur l'analyse des données
Remarques sur l'optimisation à l'aide de Pytorch
Remarques sur l'installation de Python sur votre Mac
Arguments optionnels et * args, ** kwargs
Remarques sur l'installation de pipenv sur votre Mac
Remarques sur le déploiement de pyenv avec Homebrew et la gestion des versions de Python
Catalina sur Mac et pyenv
Remarques sur l'installation d'Anaconda 3 sur Windows
Remarques sur imshow () d'OpenCV
[Python] Notes sur les instructions while (style d'écriture et boucle infinie)
Remarques sur l'installation de Python sur CentOS
Notes sur la lecture et l'écriture d'images TIFF float32 avec python
Python 3.6 sous Windows ... et vers Xamarin.
MQTT sur Raspberry Pi et Mac
Installez Mecab et mecab-python3 sur Ubuntu 14.04
Remarques sur l'utilisation de MeCab depuis Python
Remarques sur l'utilisation de pywinauto
Construisez et installez OpenCV sur Windows
Enquête sur la construction et le fonctionnement de kivi
Lier Modelica et Python sous Windows
Remarques sur l'utilisation des featuretools
Pour moi: notes sur l'infrastructure et le réseau
Remarques sur l'installation de Python à l'aide de PyEnv
Installez le fabric sur Ubuntu et essayez
Maîtriser le pip et la roue dans Windows
Classification des erreurs (python3.x) et notes de débogage
Notes sur l'utilisation de rstrip avec python.
Remarques sur l'accès à dashDB à partir de python
(Notes personnelles) Métaclasses et métaprogrammation Python
Notes d'instructions d'installation Homebrew et Pycharm
Remarques sur l'utilisation de matplotlib sur le serveur
Remarques sur la rédaction de requirements.txt
Remarques sur l'installation d'Ubuntu 18.04 sur XPS 15 7590
(Débutant) Remarques sur l'utilisation de pyenv sur Mac
Installez easy_install et pip sur Windows