Python Language La commande del


Exemple

Cette commande a plusieurs formes liées mais distinctes.

del v

Si v est une variable, la commande del v supprime la variable de son étendue. Par exemple:

x = 5
print(x) # out: 5
del x
print(x) # NameError: name 'f' is not defined

Notez que del est une occurrence de liaison , ce qui signifie que, sauf indication contraire explicite (en utilisant des nonlocal ou global ), del v affectera v local à la portée actuelle. Si vous envisagez de supprimer v dans une étendue externe, utilisez nonlocal v ou global v dans la même portée de l'instruction del v .

Dans tout ce qui suit, l’intention d’une commande est un comportement par défaut mais n’est pas appliquée par le langage. Une classe peut être écrite de manière à invalider cette intention.

del v.name

Cette commande déclenche un appel à la v.__delattr__(name) .

L'intention est de rendre le name attribut indisponible. Par exemple:

class A:
    pass

a = A()
a.x = 7
print(a.x) # out: 7
del a.x
print(a.x) # error: AttributeError: 'A' object has no attribute 'x'

del v[item]

Cette commande déclenche un appel à v.__delitem__(item) .

L'intention est que cet item n'appartienne pas au mappage implémenté par l'objet v . Par exemple:

x = {'a': 1, 'b': 2}
del x['a']
print(x) #  out: {'b': 2}
print(x['a']) # error: KeyError: 'a'

del v[a:b]

Cela appelle réellement v.__delslice__(a, b) .

L'intention est similaire à celle décrite ci-dessus, mais avec des tranches - des plages d'éléments au lieu d'un seul élément. Par exemple:

x = [0, 1, 2, 3, 4]
del x[1:3]
print(x) #  out: [0, 3, 4]

Voir aussi Garbage Collection # La commande del