On Thu, 26 May 2011 11:27:35 -0700, John Ladasky wrote: > On May 25, 9:46 pm, Uncle Ben <bgr...@nycap.rr.com> wrote: > >> list = [1,2,3] > > Somewhat unrelated, but... is it a good idea to name your list "list"? > Isn't that the name of Python's built-in list constructor method? > > Shadowing a built-in has contributed to more than one subtle bug in my > code, and I've learned to avoid it.
Agreed. However, there are good reasons for sometimes shadowing built- ins, and namespaces make it safe to do so if you are sufficiently careful. E.g. I have a module stats.sum() which shadows the built-in, but only in that module, which is exactly the behaviour I want. (If you do "from stats import sum", then you're responsible for whatever happens next.) Or you might isolate the shadow to a function small enough that you can be sure that it won't cause any problems, e.g.: def get(list, object): """Append object to a copy of list and return it.""" return list + [object] For one or two line functions, I think that's perfectly reasonable. Anything more than that, I'd be getting nervous. -- Steven -- http://mail.python.org/mailman/listinfo/python-list