On 08/14/2017 08:25 PM, Larry Hudson wrote:
[snip]

Here is my attempt to clarify the situation with some ascii graphics.
(Well, not ascii, but utf-8 box-drawing characters — I hope they come through 
ok.
And, of curse, it won't display properly with a proportional font.)

The left side is the program lines, and the right side tries to show the way Python implements the name binding to the data in memory. (But I abbreviated the long assignment line,
alist[0],alist[1],alist[2]=3,6,9 to <assignment>)

Program line          Variable bound to memory

===========  Initial assignment  ============

ss = [1, 2, 3]              ss ───> [1, 2, 3]

===============  test() code  ===============

def test(alist):            ss ─┬─> [1, 2, 3]
                          alist ─┘
---------------------------------------------
     alist = [3, 6, 9]       ss ───> [1, 2, 3]
                          alist ───> [3, 6, 9]
---------------------------------------------
     return                  ss ───> [1, 2, 3]
                          alist <Garbage collected>

===============  test1() code  ==============
def test1(alist):           ss ─┬─> [1, 2, 3]
                          alist ─┘
---------------------------------------------
     <assignment>            ss ─┬─> [3, 6, 9]
                          alist ─┘
---------------------------------------------
     return                  ss ───> [3, 6, 9]
                          alist <Garbage collected>

===============  test2() code  ==============
def test2(alist):           ss ─┬─> [1, 2, 3]
                          alist ─┘
---------------------------------------------
     <assignment>           ss ─┬─> [3, 6, 9]
                         alist ─┘
---------------------------------------------
     alist = [30, 60, 90]    ss ───> [3, 6, 9]
                          alist ───> [30, 60, 90]
---------------------------------------------
     return                  ss ───> [3, 6, 9]
                          alist <Garbage collected>


This needs a minor clarification to the test1 example, plus I want to emphasize that the assignment here is through the alist variable.

===============  test1() code  ==============
def test1(alist):            ss ─┬─> [1, 2, 3]
                          alist ─┘
---------------------------------------------
     <assignment>            ss ─┬─> [3, 6, 9]
                          alist ─┘
---------------------------------------------
     return                  ss ───> [3, 6, 9]
                          alist <Discarded>      There is nothing to garbage 
collect here.


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

Reply via email to