Am 14.03.16 um 21:31 schrieb BartC:
There are good reasons for wanting to do so. Try writing this function
in Python:
def swap(a,b):
b,a = a,b
x="one"
y="two"
swap(x,y)
print (x,y)
so that it displays "two" "one".
The pervert thing is that this is nearly there:
def swap(a,b):
c=[]
c.append(*a)
a[:]=b[:]
b[:]=c[:]
x=["one"]
y=["two"]
swap(x,y)
print x
print y
Now with a similar example, I had created a bug some time ago. Try:
import numpy
def twice(x):
x*=2
a=5
b=numpy.array(5)
twice(a); twice(b)
print a
print b
This is actually one of the warts in Python. Yes there are some
explanations with boxes and arrows and sticky notes and mutable and
immutable values... but actually you understand it best if you know how
CPython works and that a list is passed as a pointer.
Christian
--
https://mail.python.org/mailman/listinfo/python-list