实习python值

Abh*_*tia -3 python python-3.x

我正在尝试学习python中的作业我对此感到困惑.

>>> a=343434;b=343434
>>> a is b
True
>>> a=343434
>>> b=343434
>>> a is b
False
Run Code Online (Sandbox Code Playgroud)

For*_*Bru 6

Python解释器很聪明.在第一行,就可以看到两者的定义ab和分配在同一时间,所以它认为":"男人,我可以让他们指向同一个位置来保存记忆",并且它确实是这样.它可以优化您的代码以便使用内存.

在第二种情况下,它会在看到定义后立即分配内存.它'思考':"嘿,我在这里有一个定义!让我分配一些内存!",它确实如此.它无法在此处针对内存使用优化代码.

这就是为什么这些物体不一样的原因.


这仅适用于"实时模式"(当您将命令插入解释器并立即处理它们时).如果你放

a=343434
b=343434
print a is b
Run Code Online (Sandbox Code Playgroud)

进入一个文件(比如说test.py),然后运行python test.py,它将输出True(至少在Python 2.7.10中),因为,与第一种情况一样,它可以立即看到整个代码并执行一些优化.

  • 没有任何来源或证据支持的回答,只是经验.请提供消息来源. (7认同)

归档时间:

查看次数:

192 次

最近记录:

9 年,6 月 前