关于python中身份标识"is"与值运算符"=="

本文涉及驻留机制,参考博客园:https://www.cnblogs.com/wuxiaoqian726/articles/1991946.html

在Python中,通过身份标识“is”来判断是通过内存地址来判断两个是否相等,而关系运算符“==”是通过值来判断两个是否相等

例如:

str1 = "false1"
str2 = "false1"
str3 = "false is great"
str4 = "false is great"

print(str1 == str2) # 输出True
print(str2 is str1) # 输出True
print(str3 == str4) # 输出True
print(str3 is str4) # 输出False

补充知识点: 关于长类型字符串:是指除了由数字,英文字母,下划线组成的字符串之外的字符串,与长度无关

上面代码结果分析:不难看出str1与str2值相等,并且都是短类型字符串,会被存储在为同一地址,所以输出结果都为True;而str3与str4虽然值相等,但是由于字符串中含有空格,属于长类型字符串,存储在不同的内存地址中,所以在用is进行判断的时候输出False;

备注:上述代码结果是在控制台的输出,在pycharm中因为变量值相等的内存地址都会被处理成一个,所以输出结果都为True,如下图

以上内容属于自己遇到的问题加上自己的实验代码对比之后的结果得出的,欢迎大家指出不足之处

原文地址:https://www.cnblogs.com/pufa/p/13877543.html