Python deque maxlen 不显示

Python deque maxlen does not show

我有

from collections import deque

dq = deque(range(10), maxlen =  10)
dq

dq.extendleft([10, 20, 30, 40])
dq

结果

deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8])

但是在 Fluent Python (2019) 一书中,我看到了 maxlen,像这样

deque([40, 30, 20, 10, 3, 4, 5, 6, 7, 8], maxlen=10)

是不是版本不同导致的不同?

这似乎是由 IPython 引起的。如果您执行 print(dq)print(repr(dq)),您将获得预期的输出,并且在正常的 REPL 中也是如此。

In [1]: from collections import deque

In [2]: dq = deque(range(10), maxlen=10)

In [3]: dq
Out[3]: deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [4]: print(dq)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)

In [5]: print(repr(dq))
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> from collections import deque
>>> dq = deque(range(10), maxlen=10)
>>> dq
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)

更新I've submitted a PR to IPython 解决问题。