t = (1,2,3)
t1 = (1,2,3)
print(id(t))
print(id(t1))
上面几行代码在Python中的脚本模式下给出了相同的地址,但在交互模式下它输出了不同的地址。谁能解释一下原因吗?
当编译脚本时,编译器可以搜索所有等效的元组并生成代码以对所有元组使用相同的引用。
但在交互模式下,它需要保留所有元组的缓存,以便它可以搜索先前的等效元组并返回对其的引用,而不是每次都创建一个新元组。交互式解释器不会这样做。
如果将两个变量分配在同一行,则实际上会得到相同的元组。
t = (1, 2, 3); t1 = (1, 2, 3)
这大概是因为它为每个输入运行编译器,因此它可以进行全面的分析和优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)