On Tue, 15 Mar 2016 07:31 am, BartC wrote:

> But how do you pass something that refers to a itself?

You can't. "Names" are not first-class values in Python.

You can pass a string which represents a name, and a namespace, but you
cannot pass just an unquoted name and have Python automatically resolve it
as a writable reference to a name in a namespace.

I'm only aware of a handful of languages which support this sort of
reference semantics: Pascal (of course!), Algol uses the similar "pass by
name" semantics using thunks, C++, and Visual Basic.


> There are good reasons for wanting to do so. Try writing this function
> in Python:
> 
> def swap(a,b):
>      b,a = a,b


You can't. But you don't need to. The idiomatic way to swap two values in
Python is:

a, b = b, a

This works for any number of values:

a, b, c, d = d, c, a, b

and it even works (with care) for references other than bare names:

a[0], a[1] = a[1], a[0]



-- 
Steven

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to