【发布时间】:2015-11-06 19:45:03
【问题描述】:
>>> 'hi'.split()[0] is 'hi'
True
>>> 'hi there'.split()[0] is 'hi'
False
>>> 'hi there again'.split()[0] is 'hi'
False
我的假设:
第一行在 split 中只有一个元素,而另外两行有多个元素。我相信,虽然像 str 这样的 Python 原语在函数内按值存储在内存中,但函数之间会有单独的分配以简化内存管理。我认为split() 是这些功能之一,它通常分配新的字符串。但它也处理不需要任何拆分的输入的边缘情况(例如'hi'),其中原始字符串引用被简单地返回。我的解释正确吗?
【问题讨论】:
-
不,原因是'is'表示相同的内存位置它与'=='不同将你的比较更改为==并且它们会正常工作,'is'应该仅用于比较静态内存中的元素,例如 None 和 True / False
标签: python string split primitive