Si j'ai une compréhension de liste (par exemple) comme celle-ci:
['' for x in myList]
Faire effectivement une nouvelle liste qui a une chaîne vide pour chaque élément d'une liste, je n'utilise jamais le x
. Existe-t-il une façon plus simple d'écrire ceci, donc je n'ai pas à déclarer la variable x
inutilisée?
_
est un nom d'espace réservé standard pour les membres ignorés dans une affectation de boucle et de tuple, par exemple.
['' for _ in myList]
[a+d for a, _, _, d, _ in fiveTuples]
BTW votre liste pourrait être écrite sans compréhension de la liste (en supposant que vous vouliez faire une liste de membres immuables comme des chaînes, des entiers, etc.).
[''] * len(myList)
Non. Comme le dit le Zen: les cas spéciaux ne sont pas assez spéciaux pour enfreindre les règles. Le cas particulier étant les boucles n'utilisant pas les éléments de la chose en cours d'itération et la règle étant qu'il y a une "cible" à décompresser.
Vous pouvez cependant utiliser _
comme nom de variable, généralement compris comme "intentionnellement inutilisé" (même PyLint etc. le sait et le respecte).
Il s'avère que l'utilisation de dummy*
(le démarrage de Word est factice) car le nom de la variable fait la même chose que _
. _
est un standard connu et il serait préférable d'utiliser des noms de variables significatifs. Vous pouvez donc utiliser dummy
, dummy1
, dummy_anything
. En utilisant ces noms de variables, PyLint
ne se plaindra pas.
Si vous devez nommer vos arguments (au cas où, par exemple, lors de l'écriture de maquettes qui n'utilisent pas certains arguments référencés par leur nom), vous pouvez ajouter cette méthode de raccourci:
def UnusedArgument(_):
pass
puis l'utiliser comme ça
def SomeMethod(name_should_remain):
UnusedArgument(name_should_remain)
Ajoutez le commentaire suivant après la boucle for sur la même ligne:
#pylint: disable = variable-inutilisée
for i in range(100): #pylint: disable=unused-variable
Les objets générateurs n'utilisent pas réellement les variables. Donc quelque chose comme
list(('' for x in myList))
devrait faire l'affaire. Notez que x n'est pas défini comme une variable en dehors de la compréhension du générateur.
Vous pouvez également ajouter un nom de variable avec _
si vous préférez donner à la variable un nom lisible par l'homme. Par exemple, vous pouvez utiliser _foo
, _foo1
, _anything
et PyLint ne se plaindra pas. Dans une boucle for, ce serait comme:
for _something in range(10):
do_something_else()
modifier: Ajouter un exemple