In article <[EMAIL PROTECTED]>, "houbahop" <d.lapasset[Remove me)@chello.fr> wrote: >Thank you everyone, but I still not understand why such a comon feature like >passing parameters byref that is present in most serious programming >languages is not possible in a clean way,here in python. > >I have the habit to never use globals as far as possible and this involve >that my main function is passing some parameters by reference to subs to >allow them to modify the vars. > >I would be sad to break my structured programming scheme because a lack of >feature. > >In others languages you can use things like pointers to strings or >Mysub(byref MyVar) .... > >and it does the trick :)
It isn't a problem with passing by reference. The passing-by-reference part works just fine. Putting in a print statement to trace what's actually happening: Python 2.3 (#46, Jul 29 2003, 18:54:32) [MSC v.1200 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> a = [1,2,3,4,5] >>> def X(s): ... for i in xrange (len (s)): ... del s[i] ... print 'X:', s ... >>> X(a) X: [2, 3, 4, 5] X: [2, 4, 5] X: [2, 4] Traceback (most recent call last): File "<stdin>", line 1, in ? File "<stdin>", line 3, in X IndexError: list assignment index out of range >>> a [2, 4] >>> As the last line shows, lots of things got removed from `a` .. but not everything. Roel Schroeven explained why. Regards. Mel. -- http://mail.python.org/mailman/listinfo/python-list