NPE*_*NPE 28 python containers operators
看起来在Python中,list += x适用于任何可迭代的x:
In [6]: l = []
In [7]: l += [1]
In [8]: l += (2, 3)
In [9]: l += xrange(5)
In [10]: l
Out[10]: [1, 2, 3, 0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
这种行为记录在哪里吗?
Ash*_*ary 18
它的工作方式与
.extend()它返回的方式相同self.我找不到解释这个问题的文档.:-(
以下是相关的源代码listobject.c:
list_inplace_concat(PyListObject *self, PyObject *other)
{
PyObject *result;
result = listextend(self, other);
if (result == NULL)
return result;
Py_DECREF(result);
Py_INCREF(self);
return (PyObject *)self;
}
Run Code Online (Sandbox Code Playgroud)
我已经提出了一个错误报告来修复文档:http://bugs.python.org/issue16701
它现在记录在 Python 3.4+ 和 Python 2.7 中:
4.6.3. 可变序列类型
下表中的操作是在可变序列类型上定义的。在
collections.abc.MutableSequence美国广播公司提供,使其更容易正确地执行自定义序列类型这些操作。[Below]
s是可变序列类型的实例,t是任何可迭代对象,并且x是满足由 强加的任何类型和值限制的任意对象s(例如,bytearray只接受满足值限制的整数0 <= x <= 255)。
s.extend(t)或者s += t扩展
s内容t(在大多数情况下与s[len(s):len(s)] = t)
因此,现在有记录表明,对于任何可变序列类型s,s += t与s.extend(t).
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |