88 votes

Comment puis-je désigner les arguments de fonction inutilisés ?

Lors de la "déconstruit" d'un tuple, je peux utiliser _ pour désigner les éléments de tuple qui ne m'intéressent pas, par exemple

 >>> a,_,_ = (1,2,3)
>>> a
1

En utilisant Python 2.x, comment puis-je exprimer la même chose avec des arguments de fonction ? J'ai essayé d'utiliser des traits de soulignement :

 >>> def f(a,_,_): return a
...
  File "<stdin>", line 1
SyntaxError: duplicate argument '_' in function definition

J'ai aussi essayé d'omettre complètement l'argument:

 >>> def f(a,,): return a
  File "<stdin>", line 1
    def f(a,,): return a
        ^
SyntaxError: invalid syntax

Existe-t-il un autre moyen d'obtenir la même chose?

65voto

Paul Brown Points 862

Le trait de soulignement est utilisé pour les choses qui ne nous intéressent pas et le * dans *args désigne une liste d'arguments. Par conséquent, nous pouvons utiliser *_ pour désigner une liste de choses qui ne nous intéressent pas :

 def foo(bar, *_):
    return bar

Il passe même les contrôles de PyCharm.

46voto

Ronyis Points 282

Vous pouvez utiliser '_' comme préfixe, afin que pylint ignore ces paramètres :

 def f(a, _b, _c):

36voto

larsmans Points 167484

Voici ce que je fais avec les arguments inutilisés :

 def f(a, *unused):
    return a

0voto

Maksym Polshcha Points 4712

Si vous avez à la fois des arguments et un mot-clé arg, vous devez utiliser

 def f(a, *args, **kwargs):
    return a

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X