weixin_39942191 2020-11-20 20:32
浏览 0

Remove superfluous iter()-calls in PY2 iterkeys(), itervalues(), etc.

Originally reported by: Sebastian Bank (Bitbucket: xflr6, GitHub: xflr6)

Under PY2, iterkeys, itervalues, and iteritems already return an iterator, e.g.:

python
>>> spam = {}.iterkeys()
>>> assert iter(spam) is spam

So their PY2-implementation in six

python
def iterkeys(d, **kw):
    return iter(d.iterkeys(**kw))

def itervalues(d, **kw):
    return iter(d.itervalues(**kw))

def iteritems(d, **kw):
    return iter(d.iteritems(**kw))

def iterlists(d, **kw):
    return iter(d.iterlists(**kw))

can be simplified to

python
def iterkeys(d, **kw):
    return d.iterkeys(**kw)

def itervalues(d, **kw):
    return d.itervalues(**kw)

def iteritems(d, **kw):
    return d.iteritems(**kw)

def iterlists(d, **kw):
    return d.iterlists(**kw)

Also, I think, it would be nice if the documentation for iterkeys could have an extra note suggesting to simply use iter(dictionary) or for key in dictionary instead of iterkeys(dictionary).

  • Bitbucket: https://bitbucket.org/gutworth/six/issue/121

该提问来源于开源项目:benjaminp/six

  • 写回答

6条回答 默认 最新

  • weixin_39942191 2020-11-20 20:32
    关注

    remove redundant iter() (fixes #121)

    评论

报告相同问题?