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

Reply via email to