[Tutor] Python vs. MATLAB

Chris Fuller cfuller084 at thinkingplanet.net
Mon Dec 6 19:55:01 CET 2010


It also makes it hard to modify some data structure you are working with.  I 
was experimenting with some object-oriented programming in Matlab, and you 
actually have to explicitly inherit from "handle" if you have any methods that 
modify internal state.  That was a surprise!

If you've got a data structure built out of arrays or cell arrays and you want 
to not make copies everytime you pass it into or out of a function, you pretty 
much have to wrap it in one of these classes.  Another option is to use 
closures, with function handles, but that's pretty clunky also.

Cheers


On Monday 06 December 2010, Wayne Werner wrote:
> On Mon, Dec 6, 2010 at 11:09 AM, Joel Schwartz <joel at joelschwartz.com>wrote:
> > Chris,
> > 
> > Can you say more about number (7) in your list? What does "pass by value"
> > mean and what are the alternatives?
> 
> Pass by value is exactly what it sounds like - you pass the value (a copy
> of everything in the memory). This is bad when you're passing a 10,000
> item list to a function - because you now have *two* 10,000 item lists.
> It's even worse when you have many times that amount of data.
> 
> Python, OTOH passes by reference - instead of copying the list, a pointer
> to the list is passed, so when you see something like this:
> 
> def do_something(a_list):
>     a_list[2] = 4
> 
> mylist = [1,2,3,4]
> do_something(mylist)
> 
> now mylist is:
> 
> [1,2,4,4].
> 
> This is much more efficient (although it tends to bite novice
> programmers!).
> 
> HTH,
> Wayne



More information about the Tutor mailing list