Hi,

m is a variable.
m_o refers to m.
m_i refers to m_o which is m.
dummy refers to m.
dummy2 and dummy3 refer to m_o which is m.

So when you modify m_i, you are modifying the variable refered by m_i, m and
also m_o, dummy, dummy2 and dummy3.

It's always the same object, with different names. Contrary to Matlab,
Python does not copy variables, it creates references to them and copies
them only explicitely.

Matthieu

2008/6/3 Payton Gardner <[EMAIL PROTECTED]>:

> Its probably something simple I don't understand but...
>
> I've written a dummy function which takes an array m.  I'd like it to
> return a changed array m_i, and not change the initial array m.  I call it
> with mm = dummy(m);
>
>      3 from numpy import *;
>       4 def dummy(m):
>       5     m_o = m;
>       6     pdb.set_trace();
>       7     m_step  = 100;
>       8     m_i = m_o;
>       9     dummy = m;
>      10     dummy2 = m_o;
>      11     dummy3 = m_o;
>      12     i = 0;
>      13     m_i[i] = m_i[i] + m_step;
>      14     return(m_i);
>
> But after line 13 m, m_o, dummy, dummy2, and dummy3 are all changed by
> m_step, as well mm which is in a different name space.  All I've asked it to
> do is change m_i.  What's happening?
>
> Thanks,
> Payton
>
>
>
>
> Payton Gardner
> University of Utah
> Department of Geology and Geophysics
>
>
>
>
>
>
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>


-- 
French PhD student
Website : http://matthieu-brucher.developpez.com/
Blogs : http://matt.eifelle.com and http://blog.developpez.com/?blog=92
LinkedIn : http://www.linkedin.com/in/matthieubrucher
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to