del

Date: January 1st 2016
Last updated: January 19th 2016

Surprisingly, del does not delete variables. According to Python in a Nutshell by Alex Martelli (page 49), del simply unbinds references. I must admit that deleting variables has not been something I have paid close attention to.

Example:

var_a = 'test' # assign a string
var_b = 2 # assign a number 

print 'var_a = %s, var_b = %s' %(var_a, var_b) 
# py34 requires parentheses

# "delete" one variable
del var_a

# run
try: 
    var_a
except NameError:  
    print 'var_a does not exist'

# Output  
#var_a = test, var_b = 2  
#var_a does not exist

del is useful in string splicing:

test = list('vowels') # ['v','o','w','e','l','s']
del test[1:4:2] # [start: stop: stride]
# unbind 'o' and 'e' 
# start with 'o' at index 1
# stop at 'l' at index 4
# step by two, unbinding indices 1 and 3

test
# output
# ['v', 'w', 'l', 's']

Another way of removing vowels in a string:

# loop through each letter
for i in range(1, len(test)-1):
    # if the letter is a vowel, delete it
    if test[i] in list('aeiou'):
        del test[i]

# output
# ['v', 'w', 'l', 's']

Notes on garbage collection

Note that Python has garbage collection and reference counting procedures for memory clean up (http://stackoverflow.com/questions/25286171/when-does-python-delete-variables). Also if a variable is out of scope it will be cleaned up. In the code below, both x and y are not available as global variables because they are inside a function.

# test local scope

def my_variables():
    x, y = 1, 2
    return x + y

# Use %whos in Ipython to check variables 
# (https://ipython.org/ipython-doc/3/interactive/reference.html)

x, y


# Output (redacted)  
# NameError: name 'x' is not defined

results matching ""

    No results matching ""