为什么python3.7中的a is b输出与以前的版本不同?

2024-05-16 21:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能给我解释一下,为什么python3.7中的a is b输出与以前的版本不同?例如,在以下情况下:

>>> a, b = 257, 257
>>> a is b
True  # Python < 3.7
False # Python 3.7

>>> a = 257; b = 257;
>>> a is b
True  # Python < 3.7
True  # Python 3.7

这种行为也包括字符串:

>>> a, b = "wtf!", "wtf!"
>>> a is b
True  # Python < 3.7
False # Python >= 3.7

>>> 'a' * 20 is 'aaaaaaaaaaaaaaaaaaaa'
True  # in all Python versions
>>> 'a' * 21 is   'aaaaaaaaaaaaaaaaaaaaa'
False # Python < 3.7
True  # Python >= 3.7

Tags: 字符串in版本falsetrueis情况all
1条回答
网友
1楼 · 发布于 2024-05-16 21:55:40

Python实现可以自由地共享或不共享不可变的对象,这是由它自己决定的,因为我们可能并不清楚。我不知道为什么Python3.7的行为与Python3.6不同。可能是窥视孔优化器的改变,或者是不可变值的插入。你知道吗

行为改变并不重要。真正的程序不会进行这种测试,正是因为它们是关于内部实现细节的。你知道吗

相关问题 更多 >