Drowning in a teacup?

Ethan Furman ethan at stoneleaf.us
Fri Apr 1 17:15:49 EDT 2016


On 04/01/2016 01:27 PM, Fillmore wrote:

> notorious pass by reference vs pass by value biting me in the backside
> here. Proceeding in order.

It's only notorious for folks that don't understand that Python uses 
neither.  It also doesn't help when folks don't understand how 
name-binding works.

     if orderstring:
         bringOrderStringToFront(Tokens, orderstring)

Tokens has now been passed in to bringOrderStringToFront, and it has 
been assigned the name of `mylist`.


     def bringOrderStringToFront(mylist, key):

At this point `mylist` and `Tokens` are the same object.

         for i in range(len(mylist)):
             if(mylist[i].startswith(key)):
                 mylist = [mylist[i]] + mylist[:i] + mylist[i+1:]

And now they are not, as you just assigned the name `mylist` to 
something else.

--
~Ethan~



More information about the Python-list mailing list