问题描述
在我读过的一本书中,我了解到标准字符串连接可能会占用大量内存,因为它每次都会复制字符串本身并添加新值。
message = message + chr(codeNum)
我想知道它是否与 += 运算符相同。
message += chr(codeNum)
我在其他语言上看到了一些类似的主题,但我的问题主要是关于 Python。你能提供一些这方面的知识吗?
解决方法
在python中是的, 消息 = 消息 + chr(codeNum) 和 消息 += chr(codeNum) 是一样的。 基本上 += 运算符所做的是将 LHS 和 RHS 相加并将值存储在 LHS 中。 希望它澄清了您的疑问。
,您可以通过使用 timeit 模块来解决这个问题,它们看起来确实是等效的方法:
>>> s = timeit.Timer(stmt="s1 = 'str1';s2 = 'str2';s1 = s1 + s2")
>>> s.timeit()
0.04924579999999423
>>> s3 = timeit.Timer(stmt="s1 = 'str1';s2 = 'str2';s1 += s2")
>>> s3.timeit()
0.0429421999999704
,
没有区别。这可以通过简单的基准测试来证明。
1000000 次迭代中的 50 次调用。
import timeit
if __name__ == '__main__':
for i in range(50):
print(timeit.timeit(stmt='msg = msg + chr(33)',setup='msg=""'))
平均。 0.1719
import timeit
if __name__ == '__main__':
for i in range(50):
print(timeit.timeit(stmt='msg += char(33)',setup='msg=""'))
平均。 0.1748