刚刚看到(并欣赏)Brandon Rhodes在PyCon 2015上谈论字节数据的视频。
他说{{1}}方法很慢,但.extend
操作的实现方式不同而且效率更高。是的,确实:
+=
有两种扩展bytearray的方法是什么原因?他们执行完全相同的任务吗?如果没有,有什么区别?什么时候应该使用?
答案 0 :(得分:0)
有两种扩展bytearray的方法是什么原因?
+=
运算符不能与非局部变量一起使用。+=
稍快一点.extend()
可能/可能/有时可能更具可读性他们执行完全相同的任务吗?
取决于你如何看待它。实现方式不尽相同,但结果通常是。对于一堆示例和解释,可以尝试SO搜索,例如这个问题:Concatenating two lists - difference between '+=' and extend()
什么时候应该使用?
如果您关心小的性能差异,请尽可能使用操作员。除此之外,只要考虑我上面提到的限制,就可以使用你想看的任何一个。
但主要问题是为什么+ =和.extend不共享相同的内部函数来完成扩展bytearray的实际工作。
因为一个更快但有局限性,所以我们需要另一个用于我们确实有限制的情况。
的加成强>:
增量运算符可能会导致一些有趣的业务与元组:
如果你在一个元组中放入一个列表并使用+ =运算符来扩展列表,那么增量会成功,你会得到一个TypeError
来源:https://emptysqua.re/blog/python-increment-is-weird-part-ii/