"""Using lists as function parameters
http://openbookproject.net/thinkcs/python/english2e/ch09.html#list-parameters
"""
def double_values(a_list) :
for index, value in enumerate(a_list) :
a_list[index] = 2 * value
things = [2, 5, 'Spam', 9.5]
double_stuff(things)
print things
# If a function modifies a list parameter, the caller sees the change.
# Let's write the same function such that it does not have the side effect
# of modifying its parameter
def double_values2(a_list):
new_list = []
for value in a_list:
new_list += [2 * value]
return new_list
things = [2, 5, 'Spam', 9.5]
new_things = double_stuff2(things)
print new_things
print things
# which one is better?
# the second is less error prone
