web-dev-qa-db-fra.com

Faire taire PyLint au sujet des variables inutilisées pour l'interpolation de chaîne

Le module say apporte une interpolation de chaîne à Python, comme ceci:

import say

def f(a):
    return say.fmt("The value of 'a' is {a}")

Cependant, PyLint se plaint que la variable "a" n’est jamais utilisée. C'est un problème parce que mon code utilise abondamment say.fmt. Comment puis-je faire taire cet avertissement?

14
Elena

Oui, vous pouvez faire taire les avertissements pylint.

Voici un moyen:

import say

def f(a):
    #pylint: disable=unused-argument
    return say.fmt("The value of 'a' is {a}")

Vous pouvez également créer un fichier de configuration et y ajouter les lignes suivantes:

[MESSAGES CONTROL]
disable=unused-argument

Référence:

24
Robᵩ

Une approche pour désactiver ce message consiste à nommer ou à préfixer l'argument avec dummy ou _, comme dans:

import say

def f(_a):
    return say.fmt("The value of 'a' is {_a}")

Voir ici pour plus d’informations: https://stackoverflow.com/a/10107410/1080804

6
ecoe

Il y a maintenant disable-possibly-unused-variable (depuis pylint 2.0 est sorti le 2018-07-15 ), ce que l’on peut ignorer dans les fichiers qui importent votre module say:

Nouvelle vérification éventuellement-inutilisée-variable ajoutée.

Ceci est similaire à une variable non utilisée, la seule différence est qu’elle est émise lorsque nous détectons un appel à locals () dans la portée de la variable non utilisée. L'appel locals () pourrait potentiellement utiliser ladite variable en consommant toutes les valeurs présentes jusqu'au moment de l'appel. Cette nouvelle vérification permet de désactiver cette erreur lorsque l'utilisateur utilise intentionnellement locals () pour tout consommer.

Par exemple, le code suivant va maintenant déclencher cette nouvelle erreur:

def func():
    some_value = some_call()
    return locals()

La raison de cette vérification inclut explicitement votre cas d'utilisation , bien qu'il soit noté que ce n'est pas une solution parfaite:

Il serait bien d’avoir une vérification séparée des variables inutilisées si locals () est utilisé dans le même périmètre:

def example_no_locals():
  value = 42  # pylint: disable=unused-variable

def exmaple_defined_before():
  value = 42  # pylint: disable=possibly-unused-variable
  print(locals())

def exmaple_defined_after():
  print(locals())
  value = 42  # pylint: disable=unused-variable

L'avantage de ceci est que l'on peut désactiver la variable probablement-non-utilisée pour un fichier (qui contient beaucoup de formatage de chaîne, ou l'exemple de code de configuration dans # 641) ou le projet entier sans perdre également les vérifications de variable inutilisée.

0
mtd