偶然看到类似于这样的代码:
l = []
for i in range(10):
l += i,
刚看到这段代码的时候很好奇,难道还可以这样写?
后来反应过来 i,
相当于一个元组 (i,)
但是列表可以和元组相加吗?
我进行了这样的测试:
>>> l = [0]
>>> t = (1,)
>>> l + t
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list
>>> l += t
>>> l
[0, 1]
>>>
所以, 为什么 +
会出错, 而 +=
没有问题呢?
https://docs.python.org/2/lib...
l + t
对应的是l.__add__(t)
,而l += t
对应的是l.__iadd__(t)
,实现可以是不同的。另外,你偶然看到的那段代码,如果不是用来说明
__iadd__
或者讲解其它语法层面的东西,而是业务系统中用的话,就是坨屎。