Python:某个字符串[0:3]的类型是什么?

Python:某个字符串[0:3]的类型是什么?,python,Python,我有以下进行字符串比较的python代码: >>> mf="moo foo" >>> mf[0:3] 'moo' >>> mf[0:3] is "moo" False >>> mf[0:3] == "moo" True >>> str(mf[0:3]) is "moo" False 因此,double equals操作符返回true,而pythonis操作符返回false。这一定是因为它们不是同一

我有以下进行字符串比较的python代码:

>>> mf="moo foo"

>>> mf[0:3]
'moo'

>>> mf[0:3] is "moo"
False

>>> mf[0:3] == "moo"
True

>>> str(mf[0:3]) is "moo"
False
因此,double equals操作符返回true,而python
is
操作符返回false。这一定是因为它们不是同一个对象


使用
str[n:m]
获得的字符序列与同一字符串的文字表示(
'moofoo'
)之间的技术区别是什么?为什么它们不是同一个对象?

is
测试相等性以及相同的对象ID(在CPython中,这是内存中对象的地址)<代码>str(…)和切片创建浅拷贝,因此
测试失败

=
测试相等的值<代码>is
测试对象标识

引自

如果系统保持跟踪,“is”允许我们进行区分 两个看起来很像的东西,或者实际上是同一个东西


is
测试相等性以及相同的对象ID(在CPython中,这是内存中对象的地址)<代码>str(…)和切片创建浅拷贝,因此
测试失败

=
测试相等的值<代码>is
测试对象标识

引自

如果系统保持跟踪,“is”允许我们进行区分 两个看起来很像的东西,或者实际上是同一个东西


浅拷贝意味着新的临时引用或对象?什么是对象ID?它与对象引用相同吗?--编辑---好的,考虑到这些术语,我可以用谷歌搜索细节。谢谢,是的。您可以通过执行
ID(var)
来获取对象ID。浅复制创建一个新对象,然后将对嵌套对象的引用插入其中。浅复制意味着一个新的临时引用或对象?什么是对象ID?它与对象引用相同吗?--编辑---好的,考虑到这些术语,我可以用谷歌搜索细节。谢谢,是的。您可以通过执行
ID(var)
来获取对象ID。浅层副本创建一个新对象,然后将对嵌套对象的引用插入其中。这里的混乱部分是由于Java的字符串。不管用什么方法来获取“字符串”,一个“字符串”或多或少都是同一个对象。。。不。甚至在Java中也没有。试试看:
System.out.println(“bobcat”.substring(0,3)=“bob”)表示相同字符序列的两个字符串可能是也可能不是同一对象。Python和Java都是如此,你的标题“Python:What's type of some_string[0:3]”与你的问题内容不匹配。这实际上是一个关于等式和恒等运算符的问题,以前有人问过这个问题。@MattH,如果你这么说的话@{user2357112}:的确。我想==的相反意思使我很反感。不管怎样,我现在很好。谢谢大家。这里的混乱部分是由于Java的字符串。不管用什么方法来获取“字符串”,一个“字符串”或多或少都是同一个对象。。。不。甚至在Java中也没有。试试看:
System.out.println(“bobcat”.substring(0,3)=“bob”)表示相同字符序列的两个字符串可能是也可能不是同一对象。Python和Java都是如此,你的标题“Python:What's type of some_string[0:3]”与你的问题内容不匹配。这实际上是一个关于等式和恒等运算符的问题,以前有人问过这个问题。@MattH,如果你这么说的话@{user2357112}:的确。我想==的相反意思使我很反感。不管怎样,我现在很好。谢谢大家。