On Sun, Oct 19, 2008 at 12:56 AM, Paul McGuire <[EMAIL PROTECTED]> wrote: > On Oct 14, 1:36 pm, "David C. Ullrich" <[EMAIL PROTECTED]> wrote: >> > Well... How to say.. Is there any chance these people will read anything >> > *at all* ? >> >> No. That's exactly the point! Basic Python is so transparent that >> you can start using it without reading anything, just looking at >> a few examples. _Because_ of that it's their responsibility to >> ensure that if you look at a few examples you then have a complete >> understanding of the language. >> > I agree, Python really does strive to be intuitive and easy-to-learn. > So the oddity of the behavior of "optional_list_arg=[]" is a recurring > surprise to those who jump first and read documentation later. > Besides the tutorials, reference docs, and FAQs, there are also some > web pages with titles like "Python Gotchas" and "Common Mistakes in > Python" that usually tread this ground too.
Specifically: http://www.onlamp.com/pub/a/python/2004/02/05/learn_python.html?page=2 http://www.ferg.org/projects/python_gotchas.html#contents_item_6 http://zephyrfalcon.org/labs/python_pitfalls.html Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com > >> In particular default parameters should work the way the user >> expects! The fact that different users will expect different >> things here is no excuse... >> > Are you being sarcastic? Short of "import mindreading", I don't know > how Python would know which behavior a given user would expect. Maybe > instead of a "code smell", this particular Python wart is a "design > smell". > > What is surprising is that Python cannot discriminate between this: > y = 100 > def f(a,x=y): > print a+x >>>> f(1) > 101 >>>> y=200 >>>> f(1) > 101 > > and this: > > def f(a,x=[]): > print a+len(x) > x.append(a) >>>> f(1) > 1 >>>> f(1) > 2 >>>> f(1,[1,2,3]) > 4 >>>> > > Is x supposed to be a default arg or a "static" arg (in the sense of a > static var within a function as one finds in C)? > > -- Paul > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list