简单总结
现象描述:
'''
一、“编辑器“中和把赋值语句放在”同一行的cmd环境“中,相同值的不同变量会指向同一个地址
二、交互式/cmd环境中,若赋值相同值的变量在不同行输入,那么变量也会指向不同地址
三、程序编辑器的程序运行就相当于在交互式环境中的一行进行了编译处理。
'''
is 和 ==区别
本质区别:
is:判断的是对象的地址是否一致
==:判断的是内容逻辑是否相等,例如a='ajlajgl',b='ajlajgl',a == b 则是true
需要注意的现象
一、运行软件或文本编辑器中的is和交互式环境运行结果可能不同
同样的几行代码:
a = 1000
b = 1000
print(a is b)
1、在sublime中的运行结果
2、 在cmd的交互式环境中:
3、在cmd环境中的另一种输入方式显示不同:
从结果中分析:对同一个值(不在[-5,256]之间)赋值到不同变量,若是同时编译(不是交互式的每行都编译),则地址相同;若分行编译(cmd交互式编译),则地址不同
二、可能和值占用内存的大小有关
变量值在[-5,256]直接就能保证同样的值在不同行编译依然会是相同地址
参考:https://blog.csdn.net/qq_26442553/article/details/82195061
对于这种情况,可理解为,编译器保存的小值的地址;若下次还是这个值,则直接指向这个地址
变量若是相同字符串,一直指向同一个地址
但变量是列表时,不管是不是交换环境都指向不同地址
相同变量名的多次赋值,在交互式多行编译时,即使值相同,地址也会改变,但若写在一行,即使在交互式编译结果也一样