gpt4 book ai didi

Python 解释器字符串池优化

转载 作者:太空狗 更新时间:2023-10-30 00:01:36 26 4
gpt4 key购买 nike

<分区>

看到this question之后和 its duplicate我还有一个问题。

我知道 是什么== 做什么以及为什么我运行

a = "ab"
b = "ab"

a == b

我得到 True。这里的问题是为什么会发生这种情况:

a = "ab"
b = "ab"
a is b # Returns True

所以我做了研究,发现了this .答案是 Python 解释器使用字符串池。因此,如果发现两个字符串相同,它会将相同的 id 分配给新字符串以进行优化。

到这里一切都正常并得到答复。我真正的问题是为什么这个池只发生在一些字符串上。这是一个例子:

a = "ab"
b = "ab"
a is b # Returns True, as expected knowing Interpreter uses string pooling

a = "a_b"
b = "a_b"
a is b # Returns True, again, as expected knowing Interpreter uses string pooling

a = "a b"
b = "a b"
a is b # Returns False, why??

a = "a-b"
b = "a-b"
a is b # Returns False, WHY??

所以对于某些字符来说,字符串池似乎不起作用。我在这个示例中使用了 Python 2.7.6,所以我认为这会在 Python 3 中得到修复。但是在 Python 3 中尝试相同的示例后,出现了相同的结果。

问题:为什么没有针对此示例优化字符串池? Python 也优化一下不是更好吗?


编辑:如果我运行 "a b"is "a b" 返回 True。问题是为什么使用变量它对某些字符返回 False 而对其他字符返回 True

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