NEWBIE: lists as function arguments

Joe Poniatowski jponiato at ford.nospambot.com
Fri Nov 7 12:25:52 EST 2003


>From what I've read in the tutorial and FAQ, I should be able to pass a
mutable object like a list as a function argument, and have the caller see
changes made to the list by the function.  I must be doing something wrong -
the function in this case assigns items to the list, but in the main module
it's still empty:

Python 2.3.2 (#1, Oct 23 2003, 11:10:37)
[GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-81)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> ls = []
>>> def f1(l2=[]):
...     l2 = ['word1','word2']
...     print l2
...
>>> f1(ls)
['word1', 'word2']
>>> ls
[]
>>>

However, I can return the list and it works OK:
>>> ls = []
>>> def f1(l2=[]):
...     l2 = ['word1','word2']
...     print l2
...     return l2
...
>>> ls = f1(ls)
['word1', 'word2']
>>> ls
['word1', 'word2']

Am I missing something or just interpreting the documentation wrong?
Jp






More information about the Python-list mailing list