On Sun, 11 Jul 2010 21:52:17 -0700, sturlamolden wrote: > On 11 Jul, 21:37, "Alf P. Steinbach /Usenet" <alf.p.steinbach > +use...@gmail.com> wrote: > >> Oh, I wouldn't give that advice. It's meaningless mumbo-jumbo. Python >> works like Java in this respect, that's all; neither Java nor Python >> support 'swap'. > > x,y = y,x
Of course that's a good alternative, but that's not what Alf, or the original poster, are talking about. They're specifically talking about writing a function which swaps two variables in the enclosing scope. This is a good test of languages that support call-by-reference, e.g. Pascal: procedure swap(var x:integer, var y: integer): VAR tmp: integer; BEGIN tmp := x; x := y; y := x; END; If you pass two integer variables to swap(), Pascal will exchange their values. You can't do this in Python. You can get close if you assume the enclosing scope is global, or if you pass the name of the variables rather than the variables themselves, but even then you can't make it work reliably. Or at all. Naturally the swap() function itself is not terribly useful in a language like Python that makes exchanging variables so easy, but there are other uses for call-by-reference that aren't quite so trivial. However, I can't think of anything off the top of my head, so here's another trivial example that can't work in Python: s = "hello" call_something_magic(s) assert s == "goodbye" -- Steven -- http://mail.python.org/mailman/listinfo/python-list