【发布时间】:2011-03-23 06:05:07
【问题描述】:
您能否描述两种字符串连接方式之间的区别:简单的__add__ 运算符和%s 模式?
我对这个问题进行了一些调查,发现%s(不使用括号的形式)要快一些。
还出现了另一个问题:为什么'hell%s' % 'o'的结果引用了另一个内存区域而不是'hell%s' % ('o',)?
有一些代码示例:
l = ['hello', 'hell' + 'o', 'hell%s' % 'o', 'hell%s' % ('o',)]
print [id(s) for s in l]
结果:
[34375618400, 34375618400, 34375618400, 34375626256]
附:我知道字符串实习:)
【问题讨论】:
-
我认为你应该用变量来测试它,我怀疑这些简单的使用可能会在编译阶段进行优化;我的猜测是,如果模式是可变字符串,
%s表单总是会变慢
标签: python compilation internals object-identity