On 08/06/2016 10:41, Antoon Pardon wrote:
Op 08-06-16 om 10:47 schreef Steven D'Aprano:
On Wednesday 08 June 2016 17:53, Antoon Pardon wrote:
Python could go the simula route, which has two kinds of
assignment. One with the python semantics and one with C
semantics.
Let as use := for the C sematics assignment and <- for the
python sematics assignment. We could then do something like
the following.
ls := [5, 8, 13, 21]
a <- ls[2]
a := 34
print ls # [5, 8, 34, 21]
What you seem to be describing is similar to reference parameter semantics from
Pascal. Assignment doesn't work that way in C, or Python.
I disagree. In python the assignment does work similar to the reference
parameter
semantics in pascal. See the following
A = range[4]
B = A
B[2] = 5
print A # [0, 1, 5, 2]
(Did you mean range(4) and [0, 1, 5, 3]?)
This is exactly the result you would get with B as a reference parameter in
pascal.
I can't remember exactly how Pascal worked. But your assignment to B[2]
is an in-place modification. That sort of thing Python can do (when
allowed as some things are not mutable) with its existing reference system.
But a 'proper' reference allows a complete replacement of what it refers
to. That would mean being able to do:
B = "Cat"
print A # "Cat"
No tricks involving in-place updates such as assigning to list elements
are needed.
--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list