Summary: In this tutorial, we will learn what is del in Python, how it works, and how can we use it to delete objects in Python.

What is Del in Python?

The del is a statement in Python that deletes objects. Since everything in Python is an object, whether it is a variable, function, class, etc., we can easily remove them from existence using the del statement.

For example, here we are deleting a variable using the del statement:

>>> var = 'Awesome'
>>> del var
>>> print(var)
NameError: name 'var' is not defined

After deleting if we try to access the variable, we get an error stating that the variable has not been defined.

Similarly, we can also delete user-defined class and objects using the del keyword in Python.

For instance, in the following code, we are first defining a class and then deleting it using the del keyword:

>>> class Student:
...     pass
>>> del Student
>>> obj = Student()
NameError: name 'Student' is not defined

Since we deleted the class, we cannot instantiate it to create its objects.

How does dell work in Python, does it Free the Memory?

The object which we intend to delete could be a variable, function, instance of a class, etc., which isn’t a value, but a name for the value that is stored in the memory.

The del statement removes the binding of this object with its value, which disassociates them.

In doing so, the value becomes unreachable and the object is removed from the namespace, but it doesn’t necessarily remove the value from the memory.

If the object which we are deleting is the only reference to the value, then only the value will be garbage collected.

If there are multiple references for the same value, deleting one of them will not clear the memory.

Examples using del in Python

Example 1: Delete a function using del

>>> def myfun():
...     print('myfun')
>>> del myfun
>>> myfun()
NameError: name 'myfun' is not defined

Example 2: Delete attribute of an object using del

>>> class Myclass:
...     def __init__(self):
...             self.a = 'A'
...             self.b = 'B'
>>> obj = Myclass()
>>> del obj.b
>>> print(obj.a)
A
>>> print(obj.b)
AttributeError: 'Myclass' object has no attribute 'b'

We can also delete items from the Python data structures such as list, dictionary, etc., using the del statement. Let’s see some examples of this.

Example 3: Delete items from a list using del

>>> l = [1, 2, 3, 4, 5, 6, 7]
>>> del l[3:]
>>> print(l)
[1, 2, 3]

Example 4: Delete items from a dictionary using del

>>> d= {'key1': 'value1', 'key2': 'value2'}
>>> del d['key1']
>>> print(d)
{'key2': 'value2'}

Conclusion

The del statement in Python is used to delete the objects in the current namespace. The object which we intend to delete could be anything in Python, for example, a class, variable, items of a list or dictionary, etc.

Deleting any object using del doesn’t necessarily clear the memory, unless we are deleting the only reference to the object.

Leave a Reply