Scope troubles with a swap function
Matthew D. Wood
woodm at equire.com
Fri Aug 10 15:40:34 EDT 2001
Hans Nowak wrote:
>> ===== Original Message From "Matthew D. Wood" <woodm at equire.com> =====
>> Ok, I've been banging my head against this for a sufficiently long time
>> that I feel justified in presenting this personal challenge to the list.
>>
>> How do you make a swap function?
>
>
> You don't need to. :) Use:
>
> a, b = b, a
That makes me so mad that I didn't think of that. Great suggestion. (I
feel really dumb...)
>
>> How do you make a function or a callable object instance that will do
>> what the following code intends to do:
>>
>> def swap (heaven, hell) :
>> purgatory = heaven
>> heaven = hell
>> hell = purgatory
>
>
> Python's internal workings are very different from languages like C and
> Pascal. A Python "variable" is not a location in memory that you can fill with
> arbitrary data. This Pascal code:
>
> X := 3;
> X := 42;
>
> changes the value of X, which resides at a certain location in memory. But the
> equivalent Python code
>
> x = 3
> x = 42
>
> does not do exactly the same; rather, it binds the name 'x' to the value 3,
> then rebinds that name to the value 42. Other people explain this better than
> me; see
>
> http://w1.132.telia.com/~u13212494/guides/python-objects.htm
>
> HTH,
>
> --Hans Nowak
>
>
Yeah, from what I have found, the best way to think about things is that
everything is a reference. However, you can't affect the value of a
passed parameter. You can however, effect the contents of that
reference. (You can't point to a different list, but you can screw with
the contents of the current list.) I just couldn't figure out how to
get around that problem.
But thanks to you, I can. I love this list!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20010810/0b84987c/attachment.html>
More information about the Python-list
mailing list