[Tutor] New to this list ....
ramit.prasad at jpmorgan.com
Fri Mar 30 19:56:50 CEST 2012
>I'm used to c
> variables going out of scope once you leave the called function. I
> imagine if you want to leave the variables unchanged, you have to
> re-assign them inside the function.
Lists are mutable objects. When you pass a list to a function you bind
a name in the functions namespace to the list object. Every name
binding to that object will have the ability to modify the list.
If you want to modify the list but not change it for others usually
you do something like
new_list = list( old_list )
new_list = old_list[:]
Now if you wanted to change an immutable object (like int) then you
would have to return object because the name binding is only the
function's scope. It should also be noted that you can modify
the list but you cannot reassign the list from the function.
>>> def blah( a ):
... a = 
>>> b = [ 1, 3, 4 ]
>>> blah( b )
>>> print b
[1, 3, 4]
The reason b is untouched is because a =  just binds the name 'a' to
a new list object while the name 'b' is still bound to the original
list object. To bind 'b' to the new list I would have had to return it
Ramit Prasad | JPMorgan Chase Investment Bank | Currencies Technology
712 Main Street | Houston, TX 77002
work phone: 713 - 216 - 5423
This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.
More information about the Tutor