Python 3.6.1中的一个简单代码片段: import datetime j = iter(datetime.datetime.now, None) next(j) 收益: Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration 而不是打印出每个next()的经典now()行为。 我已经看到类似的代码在Python 3.3中工作,我错过了什么或有更改3.6.1版本的东西?
字典在Python 3.6中(至less在CPython实现下)与以前的版本不同。 这似乎是一个实质性的变化,但这只是文档中的一小段。 它被描述为CPython的实现细节而不是语言特征,但也意味着这可能在未来成为标准。 新的字典实现如何在保持元素顺序的同时比旧的更好? 以下是文档中的文字: dict()现在使用由PyPy开创的“紧凑”表示。 新的dict()的内存使用比Python 3.5要小20%到25%。 PEP 468 (保留函数中的** kwargs的顺序)由此实现。 这个新实现的顺序保留方面被认为是一个实现细节,不应该被依赖(这可能会在将来发生变化,但是希望在改变语言规范之前在几个版本中使用这个新的dict实现语言为所有当前和未来的Python实现指定保留顺序的语义;这也有助于保持随机迭代顺序仍然有效的老版本语言的向后兼容性,例如Python 3.5)。 (由INADA Naoki提供, 刊登在27350号文件中, 最初由Raymond Hettinger提出 。 编辑:Raymond Hettinger 最近在推特上说 :“[有了dict命令]非常方便,对[Python] 3.7的保证几乎是不可避免的”。 编辑2:如何CPython 3.6 dict的两个例子并不总是显示在插入顺序, 与pprint和IPython的pprint 。