我需要澄清Python的语义。
当Python遇到表单
的声明时,这是真的吗?x = some_term
正在创建一个新对象,正如评估术语some_term
的过程所指定的那样?
现在假设Python遇到了以下几行:
x = the_term
y = the_term
其中the_term
是一个固定的术语(假设它不包含对生成“随机对象”的函数的任何引用)。正如我所看到的,Python的行为应该如下:首先创建一个新对象O1并将其与名称x
相关联。然后创建第二个新对象O2并将其与名称y
相关联。名称x
和y
现在都在合适的名称空间中。对象O1和O2是不同的对象,它们占据内存中的不同位置,并且具有相同的值。因此测试
x == y
应返回True,并测试
x is y
应该返回False。
请告诉我,为什么我会观察以下内容:
x=5
y=5
现在x==y
返回(当然)True,x is y
返回True。
但如果我们提出:
x=99999999999999999999
y=99999999999999999999
现在x==y
返回(当然)为True,x is y
返回False。