首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:为什么("hello“是"hello")计算为True?

Python:为什么("hello“是"hello")计算为True?
EN

Stack Overflow用户
提问于 2009-09-08 07:13:19
回答 7查看 21.1K关注 0票数 63

为什么"hello" is "hello"会在Python中生成True

我阅读了下面的here

如果两个字符串文字相等,则它们已放入相同的内存位置。字符串是一个不可变的实体。不能造成任何伤害。

所以每个Python字符串在内存中只有一个位置?听起来很奇怪。这里发生了什么事?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-09-08 07:15:09

Python (如Java、C、C++、.NET)使用字符串池/互操作。解释器意识到"hello“和"hello”是一样的,所以它优化并使用内存中的相同位置。

另一个好东西:"hell" + "o" is "hello" ==> True

票数 93
EN

Stack Overflow用户

发布于 2009-09-08 09:19:59

所以每个

字符串在内存中只有一个位置?

不,只有解释器决定对其进行优化,这是一个基于策略的决定,该策略不是语言规范的一部分,并且在不同的CPython版本中可能会发生变化。

例如:在我的安装(2.6.2 Linux)上:

>>> 'X'*10 is 'X'*10
True
>>> 'X'*30 is 'X'*30
False

ints也是如此:

>>> 2**8 is 2**8
True
>>> 2**9 is 2**9
False

所以不要依赖'string‘就是'string':即使只是看看C实现,它也是不安全的。

票数 64
EN

Stack Overflow用户

发布于 2009-09-08 07:16:35

文字字符串可能是根据它们的散列或类似内容进行分组的。两个相同的文字字符串将存储在相同的内存中,任何引用都会引用该字符串。

 Memory        Code
-------
|          myLine = "hello"
|        /
|hello  <
|        \
|          myLine = "hello"
-------
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1392433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档