【发布时间】:2017-08-10 13:56:29
【问题描述】:
我正在使用 python docs 提供的 grouper 配方的修改形式:
from itertools import chain, islice
def grouper(iterable, n):
iterable = iter(iterable)
while True:
peek = next(iterable)
yield chain((peek,), islice(iterable, n - 1))
这似乎工作正常。我可以这样做:
>>> x = bytearray(range(16))
>>> [int.from_bytes(n, 'big') for n in grouper(x, 4)]
[66051, 67438087, 134810123, 202182159]
但是,当我在 IPython 中运行完全相同的代码时,我得到一个 DeprecationWarning:
In [1]: from itertools import chain, islice
...: def grouper(iterable, n):
...: iterable = iter(iterable)
...: while True:
...: peek = next(iterable)
...: yield chain((peek,), islice(iterable, n - 1))
In [2]: x = bytearray(range(16))
In [3]: [int.from_bytes(n, 'big') for n in grouper(x, 4)]
__main__:1: DeprecationWarning: generator 'grouper' raised StopIteration
Out[3]: [66051, 67438087, 134810123, 202182159]
警告来自哪里,为什么我在常规 Python 控制台中看不到它?我该怎么做才能让警告消失?
我正在使用 Python 3.6.2 和 IPython 6.1.0
【问题讨论】:
标签: python python-3.x ipython