Multi-dimensional list initialization
Andrew Robinson
andrew3 at r3dsolutions.com
Wed Nov 7 19:24:22 EST 2012
On 11/07/2012 01:01 PM, Ian Kelly wrote:
> On Wed, Nov 7, 2012 at 12:51 PM, Andrew Robinson
> <andrew3 at r3dsolutions.com> wrote:
>> Interesting, you avoided the main point "lists are copied with list
>> multiplication".
> It seems that each post is longer than the last. If we each responded
> to every point made, this thread would fill a book.
It already is :)
>
> Anyway, your point was to suggest that people would not be confused by
> having list multiplication copy lists but not other objects, because
> passing lists into functions as parameters works in basically the same
> way.
Not quite; Although I wasn't clear; The variable passed in is by
*value* in contradistinction to the list which is by reference. Python
does NOT always default copy by reference *when it could*; that's the point.
Hence the programmer has to remember in foo( x,y ), the names x and y
when assigned to -- *DONT* affect the variables from which they came.
But any object internals do affect the objects everywhere.
A single exception exists; My thesis is for a single exception as well
-- I think Python allows that kind of thinking.
> So actually I did address
> this point with the "call-by-object" tangent; I just did not
> explicitly link it back to your thesis.
My apology for not proof reading my statements for clarity. It was
definitely time for a nap back then.
> Potayto, potahto. The distinction that you're describing is between
> "strict" versus "non-strict" evaluation strategies. Hinging the
> distinction on the non-descriptive words "call" and "pass" is lazy
> terminology that should never have been introduced in the first place.
I would do it again. Other's have already begun to discuss terminology
with you -- I won't double team you.
More information about the Python-list
mailing list