Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么python列表仍然对+=使用uuu iadd_uuu方法,而不是uuu iconcat_uuu方法?_Python - Fatal编程技术网

为什么python列表仍然对+=使用uuu iadd_uuu方法,而不是uuu iconcat_uuu方法?

为什么python列表仍然对+=使用uuu iadd_uuu方法,而不是uuu iconcat_uuu方法?,python,Python,我看到2.5中添加了“iconcat”方法,那么“Idd”的继续使用是否只是历史遗留?有什么原因不能或没有被iconcat取代吗?我是否完全误解了iconcat的目的 我想到的一些可能的原因是: 此更改将中断任何重载list+=运算符的代码 通过_iadd__________________________________________ __iadd和iconcat在功能上是等效的, 因此,区别纯粹是语义上的。因为这些方法不是 直接调用时,使用稍微更有意义的方法名并不是进行此类更改的充分理由

我看到2.5中添加了“iconcat”方法,那么“Idd”的继续使用是否只是历史遗留?有什么原因不能或没有被iconcat取代吗?我是否完全误解了iconcat的目的

我想到的一些可能的原因是:

此更改将中断任何重载list+=运算符的代码 通过_iadd__________________________________________

__iadd和iconcat在功能上是等效的, 因此,区别纯粹是语义上的。因为这些方法不是 直接调用时,使用稍微更有意义的方法名并不是进行此类更改的充分理由


我很好奇是否有人对此有任何见解或历史观点。

\uuuuuuu concat\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu iconcat\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。它们不是对象的特殊方法。。。请参阅:

\uuuuu concat\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。它们不是对象的特殊方法。。。请参阅:

但引用操作符模块文档:操作符模块导出一组与Python的内部操作符相对应的有效函数[…]函数名是用于特殊类方法的函数名,并且:a=iconcata,b相当于a+=b(对于a和b序列)。那么,iconcat不是对应于列表的+=运算符吗?@ebenpack它说相当于。。。但是+=映射到uu iadd_uuu特殊方法…@ebenpack您必须导入操作符模块才能使用iconcat。它不是python中列表的+=的内置实现。内置实现使用特殊的方法u_iadd_u,它是内置列表类的一部分。如果x是一个列表,那么x.\u iadd\u y与operator.iaddx,y不同。我想你们都误解了我的问题。我知道iconcat不是列表的特殊方法,也不用于+=。我问,纯粹出于好奇,为什么没有使用它?考虑到有两种运算符方法对应于+=iconcat和iadd,似乎就语义而言,对于a和b序列而言,等价于a+=b的方法将是明显的方法选择。由于不是,而且iconcat只是在2.5中添加的,我怀疑原因基本上是惯性。这就是我想要的答案。@ebenpack+=应该转化为一种方法。如果它是iadd,那么它是通用的-它通过+=。。。对于序列和字符串,术语concatenate是有意义的。就数字而言,它不是。它是inplaceadd的缩写,所以它被保留了下来-对于同一个操作符有多个方法是很可怕的-是一个方法优先于另一个,还是只允许定义一个?然后,知道在一个类中重写哪一个是pot-luck等。但是引用操作符模块文档:操作符模块导出一组与Python的内在操作符相对应的有效函数[…]函数名是用于特殊类方法的函数名和:a=iconcata,对于a和b序列,b相当于a+=b。那么,iconcat不是对应于列表的+=运算符吗?@ebenpack它说相当于。。。但是+=映射到uu iadd_uuu特殊方法…@ebenpack您必须导入操作符模块才能使用iconcat。它不是python中列表的+=的内置实现。内置实现使用特殊的方法u_iadd_u,它是内置列表类的一部分。如果x是一个列表,那么x.\u iadd\u y与operator.iaddx,y不同。我想你们都误解了我的问题。我知道iconcat不是列表的特殊方法,也不用于+=。我问,纯粹出于好奇,为什么没有使用它?考虑到有两种运算符方法对应于+=iconcat和iadd,似乎就语义而言,对于a和b序列而言,等价于a+=b的方法将是明显的方法选择。由于不是,而且iconcat只是在2.5中添加的,我怀疑原因基本上是惯性。这就是我想要的答案。@ebenpack+=应该转化为一种方法。如果它是iadd,那么它是通用的-它通过+=。。。对于序列和字符串,术语concatenate是有意义的。就数字而言,它不是。它是inplaceadd的缩写,所以它被保留了下来-对于同一个操作符有多个方法是很可怕的-是一个方法优先于另一个,还是只允许定义一个?然后,知道在一个类中重写哪一个将是运气好等等。。。