"""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