gpt4 book ai didi

python - Python 中的字符串连接

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:42 25 4
gpt4 key购买 nike

您能描述一下两种字符串连接方式的区别:简单的 __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]

附言我知道字符串实习:)

最佳答案

这是一个小练习:

>>> def f1():
'hello'


>>> def f2():
'hel' 'lo'


>>> def f3():
'hel' + 'lo'


>>> def f4():
'hel%s' % 'lo'


>>> def f5():
'hel%s' % ('lo',)


>>> for f in (f1, f2, f3, f4, f5):
print(f.__name__)
dis.dis(f)


f1
1 0 LOAD_CONST 1 (None)
3 RETURN_VALUE
f2
1 0 LOAD_CONST 1 (None)
3 RETURN_VALUE
f3
2 0 LOAD_CONST 3 ('hello')
3 POP_TOP
4 LOAD_CONST 0 (None)
7 RETURN_VALUE
f4
2 0 LOAD_CONST 3 ('hello')
3 POP_TOP
4 LOAD_CONST 0 (None)
7 RETURN_VALUE
f5
2 0 LOAD_CONST 1 ('hel%s')
3 LOAD_CONST 3 (('lo',))
6 BINARY_MODULO
7 POP_TOP
8 LOAD_CONST 0 (None)
11 RETURN_VALUE

如您所见,所有简单的连接/格式化都是由编译器完成的。最后一个函数需要更复杂的格式,因此,我猜,实际执行了。由于所有这些对象都是在编译时创建的,它们都具有相同的 ID。

关于python - Python 中的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com