所以,让我们通过我们所知道的:为什么Python将单个字符串计数为相同?
- 的
is
运营商身份进行比较,而不是价值,而不是在==
运营商。 - Python实习生字符串文字,所以
"hello" is "hello"
是True
。
所以我不明白的是这种行为:
>>>'h' is input()
h
True
>>>'hj' is input()
hj
False
单个字符被算作是相同的,即使他们不是两个字符串常量,而两个字符的字符串给我我期望的结果是不一致的。
由于input()函数动态地创建一个字符串,所以结果不会被拦截,这就是为什么'hj'
和动态创建的'hj'
不相同的原因。但为什么'h'
和动态'h'
相同?
这是否意味着Python缓存/实习生所有长度为1的字符串?
不是重复! – Aerovistae
@Aerovistae:你能解释为什么不呢? – Eric
另一个答案没有深入研究为什么单个字符串在所有情况下都是相同的,即使在动态创建时,这也是问题。另一个答案解释了字符串身份测试通常如何工作。 – Aerovistae