Hans Georg Schaathun wrote: > On 01 May 2011 08:45:51 GMT, Steven D'Aprano > <steve+comp.lang.pyt...@pearwood.info> wrote: > : Python uses a data model of "name binding" and "call by object" (also > : known as "call by sharing"). I trust I don't need to define my terms, > : but just in case: > > Without having the time to get my hand around exactly what this means: > Simula has three ways of transmitting arguments, namely transmission > by name, by value, and by reference. Is transmission by name the same > as call by object? Anyway, I have never seen anyone counting more than > three ways of doing this ...
To illustrate the neither-fish-nor-fowl nature of Python calls: mwilson@tecumseth:~$ python Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> def identify_call (a_list): ... a_list[0] = "If you can see this, you don't have call-by-value" ... a_list = ["If you can see this, you have call-by-reference"] ... >>> my_list = [None] >>> identify_call (my_list) >>> my_list ["If you can see this, you don't have call-by-value"] so it's neither call-by-value nor call-by-reference as (e.g.) C or PL/I programming would have it (don't know about Simula, so I am off topic, actually.) It's not so wrong to think of Python's parameter handling as ordinary assignments from outer namespaces to an inner namespace. Mel. -- http://mail.python.org/mailman/listinfo/python-list