247 votes

Effacer une variable en python

Existe-t-il un moyen d'effacer la valeur d'une variable en python ?

Par exemple, si j'implémentais un arbre binaire :

class Node:
    self.left = somenode1
    self.right = somenode2

Si je voulais supprimer un nœud de l'arbre, il me faudrait définir self.left à vider.

466voto

starrify Points 3322

Le site del mot-clé ferait l'affaire.

>>> a=1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

Mais dans ce cas, je vote pour self.left = None

22 votes

Parfois, cela ne le supprime pas entièrement, mais cela supprime seulement la référence à la mémoire. Cela peut laisser des variables fantômes en mémoire qui ne sont pas gc.

6 votes

del a également l'inconvénient que si vous essayez de supprimer une variable qui n'existe pas, elle lève une exception, qui est généralement indésirable.

36 votes

Je voulais juste signaler que si vous avez accidentellement déclaré une variable qui écrase les commandes intégrées, par exemple, type=… alors que vous vouliez taper type(…) alors le supprimer est le moyen le plus simple de retrouver la fonctionnalité d'origine. En d'autres termes, si vous le conservez en tant que None, vous coupez toujours l'accès à la fonction sous-jacente.

175voto

bnaul Points 4006

Quel est le problème avec self.left = None ?

20 votes

Je ne connais pas le mot clé None. Est-ce similaire à null dans d'autres langues ?

6 votes

Oui, il est équivalent à null.

12 votes

@Bnicholas Cependant ce n'est pas comme si null en PHP, en ce sens que mettre une variable à null en PHP vous donne un comportement similaire dans la plupart des cas, comme si vous ne l'aviez pas défini en premier lieu. Une valeur de None en Python est très différente d'une variable indéfinie. None est tout à fait comme la plupart des autres incarnations de null Cependant (jusqu'à ce que nous entrions dans des détails plus obscurs, du moins).

125voto

user11788 Points 31

var = None "efface la valeur", en mettant la valeur de la variable à "null" comme la valeur de "None", cependant le pointeur vers la variable reste.

del var supprime totalement la définition de la variable.

Au cas où vous voudriez utiliser la variable plus tard, par exemple en lui donnant une nouvelle valeur, c'est-à-dire en conservant la variable, None serait mieux.

0 votes

Que faire si je veux supprimer complètement une variable qui, dans certaines circonstances, n'existe pas. Existe-t-il un paramètre permettant d'éviter une erreur ? J'ai besoin de supprimer plusieurs variables : del a, b, c, d Je pourrais utiliser loop et try/except, mais je préfère un interrupteur pour l'éviter.

4voto

Aditya Naidu Points 1247

Vous pouvez essayer ceci :

 self.left = None

3voto

andrewdotnich Points 2055

En Python, la valeur vide spéciale est appelée None Ainsi, dans votre exemple, lorsque vous supprimez un nœud de votre arbre, vous définissez les paramètres suivants self.left = None .

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