Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Marko Rauhamaa Newsgroups: comp.lang.python Subject: Re: Pass variable by reference Date: Tue, 06 May 2014 13:38:14 +0300 Organization: A noiseless patient Spider Lines: 23 Message-ID: <87eh07i44p.fsf@elektro.pacujo.net> References: <53689aeb$0$11109$c3e8da3@news.astraweb.com> <87lhufi85o.fsf@elektro.pacujo.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx05.eternal-september.org; posting-host="ff5cf27ef3d5b31f034d3b72bdc27a41"; logging-data="26595"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18GMZQDrpdQ8IAM/aNUQHl2" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) Cancel-Lock: sha1:NWUZlqkRiJwFOmpIS9qmjzD/Hek= sha1:B1qD/NCuiSErcu1IkFta7KKc6Vs= Xref: csiph.com comp.lang.python:70953 Chris Angelico : >> characters, words, lines = stats.read() > > That's not really pass-by-reference, though. What you're doing is > output parameters, which are usually implemented in C with pointers, > but in Python with a return tuple. Correct, but it is worth questioning the question itself: what do you need pass-by-reference for? A very common case is returning multiple values. For that, Python has other idioms available. > And, by the way, it's not purely academic. There have been times when > I've done exactly that as a means of passing state around. It's not > common, but it has its place. Nobody has been disputing Steven's technique. There are many variations to that as well. For example, instead of a list, there might be an appropriate class/object that could host the interesting piece of information and act as the desired reference. Marko