On Tue, Aug 26, 2008 at 8:31 PM, Chris Rebert <[EMAIL PROTECTED]> wrote: > You might then be interested in the following related discussions from > last year wherein I proposed something extremely similar: > > [Python-ideas] proto-PEP: Fixing Non-constant Default Arguments > http://mail.python.org/pipermail/python-ideas/2007-January/000121.html > > [Python-3000] pre-PEP: Default Argument Expressions > http://mail.python.org/pipermail/python-3000/2007-February/005712.html
I apologize, this second link should have been to http://mail.python.org/pipermail/python-3000/2007-February/005704.html - Chris > > The proposal was rejected by the BDFL (for being too magical) before > it had become a full-fledged PEP. > > - Chris > > > On Tue, Aug 26, 2008 at 8:21 PM, Sam Bishop <[EMAIL PROTECTED]> wrote: >> Hi, all. >> >> I know that Python 3.0 is quite a ways along, but I'd like to make two >> small suggestions with regards to how the language works. (I would >> have spoken up earlier, except that I'm very new to Python.) >> >> I've talked to a few of my co-workers who are also new to Python, and >> we've all been surprised at the way code like this behaves: >> >> :def process(L=[]): >> : # 'x' always needs processed... >> : L += ['x'] >> : print L >> : >> :process() # prints "['x']" >> :process() # prints "['x', 'x']"! >> >> We've been able to figure out what's happening, but it seems >> counter-intuitive. >> >> If Python were changed so that default-argument, rvalue objects were >> recreated each time a function is invoked, I think that it would be >> intuitive (and efficient) if the object were only created when >> necessary. Here's (approximately) another code snippet I've seen >> recently: >> >> :def determine_default(): >> : print "Why is this code executing?" >> : return 1 >> : >> :def fun(arg=determine_default()): >> : pass >> : >> :fun("value") >> >> Thanks, >> Sam >> _______________________________________________ >> Python-3000 mailing list >> Python-3000@python.org >> http://mail.python.org/mailman/listinfo/python-3000 >> Unsubscribe: >> http://mail.python.org/mailman/options/python-3000/cvrebert%40gmail.com >> > _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com