[Python-3000] Iterators for dict keys, values, and items == annoying :)
Adam DePrince
adam.deprince at gmail.com
Sat Apr 1 04:52:34 CEST 2006
On Thu, 2006-03-30 at 23:37 -0800, Neal Norwitz wrote:
> On 3/30/06, Terry Reedy <tjreedy at udel.edu> wrote:
> >
> > "Aahz" <aahz at pythoncraft.com> wrote in message
> > news:20060331012037.GA7960 at panix.com...
> > > What do we want to tell people who have code like this:
> > >
> > > keys = d.keys()
> > > keys.sort()
> >
> > Could a good-enough code analyzer detect such, even if separated by
> > intervening lines? If so, it could suggest sorted() as a fix. I wonder if
> > the pypy analyzer could be adapted for 2.x to 3.0 warning and upgrade
> > purposes. Or do pylint or pychecker gather enough information?
>
> pychecker is supposed to have this info, but only if d is known to be
> a dict. It could be extended to assume any method keys() (and
> friends) should return iterators. In which case, it would say that an
> iterator doesn't have a sort method. Below is the output of the
> current version.
With the views that we were talking about before, with d.keys() all you
have is the view, neither an iter nor list have been instantiated.
I'd almost say that
keys = d.keys()
foo = keys.sort()
could fit quite well into the view framework.
>
> n
>
> ### file: tt.py
> def foo():
> d = {}
> keys = d.keys()
> keys.sort()
> keys.sort2()
> ###
>
> $ pychecker tt.py
> Processing tt...
>
> Warnings...
>
> tt.py:6: Object (keys) has no attribute (sort2)
> _______________________________________________
> Python-3000 mailing list
> Python-3000 at python.org
> http://mail.python.org/mailman/listinfo/python-3000
> Unsubscribe: http://mail.python.org/mailman/options/python-3000/adam.deprince%40gmail.com
More information about the Python-3000
mailing list