is关键字用于比较对象引用,于是我做了如下操作示例:
a = "a bc"
b = "a bc"
a is b # False
a = b
a is b # True
a="ABC"
b="ABC"
a is b # True
为什么两次is返回的是不同结果?不是应该都是true吗?
is关键字用于比较对象引用,于是我做了如下操作示例:
a = "a bc"
b = "a bc"
a is b # False
a = b
a is b # True
a="ABC"
b="ABC"
a is b # True
为什么两次is返回的是不同结果?不是应该都是true吗?
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
因为string pooling (或叫intern)。 is相等代表两个对象的id相同(从底层来看的话,可以看作引用同一块内存区域)。 至于为什么"ABC"被intern了而"a bc"没有,这是python解析器实现决定的,可能会变。