Résumé des arguments Python

introduction

arguments python, mais arguments positionnels, arguments de mot-clé, arguments de mot-clé uniquement J'ai été confus quant à l'obtention de plusieurs arguments en utilisant \ *, **, donc je l'ai réglé.

Argument de position

def f(a, b):
  return a, b
f(1, 2)
=======================
(1, 2)

Attribuer en spécifiant un argument (argument de mot-clé)

Les arguments passés comme a = 1 sont appelés arguments de mot-clé, et l'ordre dans lequel ils sont passés n'est pas pertinent.

def f(a, b):
  return a, b
f(b=2, a=1)
=======================
(1, 2)

Vous ne pouvez pas passer un argument de position après un argument de mot-clé.

def f(a, b):
  return a, b
f(b=2, 1)
=======================
SyntaxError: positional argument follows keyword argument

Recevez des arguments de longueur variable sous forme de tuples et de dicts en utilisant \ *, **

Vous pouvez utiliser * pour transmettre des arguments de longueur variable sous forme de tuples.

def f(a, b, *c):
  return a, b, c
f(1, 2, 3, 4)
=======================
(1, 2, (3, 4))

Vous pouvez utiliser ** pour transmettre des arguments de mots clés de longueur variable sous forme de dict.

def f(a, b, **c):
  return a, b, c
f(1, 2, x=3, y=4)
=======================
(1, 2, {'x': 3, 'y': 4})

Les arguments positionnels ne peuvent pas être affectés après les arguments utilisant \ *.

def f(a, *b, c):
  return a, b, c
f(1, 2, 3, 4)
=======================
TypeError: f() missing 1 required keyword-only argument: 'c'

Il semble que ni les arguments de position ni les arguments de mots-clés ne peuvent être affectés après **.

def f(a, **b, c):
  return a, b, c
f(1, x=2, y=3, c=4)
=======================
SyntaxError: invalid syntax

Arguments de mots clés uniquement

Vous pouvez désormais spécifier des arguments de mots clés uniquement à partir de Python 3. Les arguments qui viennent après un argument précédé d'une * ne peuvent être affectés qu'en tant qu'argument de mot-clé. Dans ce qui suit, c doit être affecté en tant qu'argument de mot-clé au lieu d'un argument de position.

def f(a, *b, c):
  return a, b, c
f(1, 2, 3, c=4)
=======================
(1, (2, 3), 4)

Si vous n'utilisez pas d'arguments de position de longueur variable, spécifiez * seul, et les arguments suivants seront des arguments de mot-clé uniquement.

def f(a, *, b):
  return a, b
f(1, 2)
=======================
TypeError: f() takes 1 positional argument but 2 were given
def f(a, *, b):
  return a, b
f(1, b=2)
=======================
(1, 2)

Arguments de position uniquement

Comme je vous l'ai dit dans les commentaires, il semble qu'il y ait aussi des arguments de position uniquement. https://docs.python.org/ja/3/tutorial/controlflow.html#positional-only-parameters

def f(x, y):
  print(x, y)
f(y=456, x=123)
============================
123 456

def f(x, y, /):
  print(x, y)
f(y=456, x=123)
============================
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() got some positional-only arguments passed as keyword arguments: 'x, y'

f(x=123, y=456)
============================
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() got some positional-only arguments passed as keyword arguments: 'x, y'

f(123, 456)
============================
123 456

Quand j'ai été signalé par d'autres personnes, j'ai pensé que c'était peut-être une bonne étude parce que c'était embarrassant.

Recommended Posts

Résumé des arguments Python
résumé lié à l'opération de fichier python
Résumé des opérations de liste Python3
Résumé Python
Un bref résumé de la collection Python
Résumé des index et des tranches Python
[OpenCV; Python] Résumé de la fonction findcontours
Résumé du didacticiel Python
Les bases de Python ①
Bases de python ①
Copie de python
résumé relatif à python
Résumé des bases de Python
Introduction de Python
[Python] Résumé de l'utilisation des pandas
Résumé de diverses instructions for en Python
[Python2.7] Résumé de l'utilisation d'unittest
Résumé des méthodes intégrées, etc. de la liste Python
Résumé des techniques utiles de Scrapy en Python
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
Résumé de la spécification des options d'axe de Python "numpy.sum (...)"
[Python] Opération d'énumération
À propos des arguments de fonction (python)
Résumé du didacticiel Python Django
Résumé de la correspondance entre les opérations de tableau ruby et python
Résumé de Tensorflow / Keras
Unification de l'environnement Python
Résumé des différences entre PHP et Python
Copie des préférences python
Résumé de la façon d'importer des fichiers dans Python 3
Principes de base du grattage Python
Résumé de l'utilisation de pyenv
[python] comportement d'argmax
Résumé sur Python3 + OpenCV3
Utilisation des locaux Python ()
le zen de Python
Résumé de l'utilisation de MNIST avec Python
Résumé des arguments de la fonction Python
Installation de Python 3 et Flask [Résumé de la construction de l'environnement]
Installation de Python 3.3 rc1
Résumé des opérations d'annuaire Python
Résumé du cadre Python AI
Résumé relatif au traitement itératif Python
Résumé des opérations sur les chaînes
[Python] Résumé des opérations sur les fichiers S3 avec boto3
# 4 [python] Bases des fonctions
Résumé des tableaux Python fréquemment utilisés (pour moi-même)
Connaissance de base de Python
Anecdotes sobres de python3
Résumé de l'étude de Python pour utiliser AWS Lambda
Résumé relatif aux E / S de python et fortran
Bases de python: sortie
Installation de matplotlib (Python 3.3.2)
Application de Python 3 vars
Dictionnaire des arguments de mots clés