python中None,is和==的深入探讨
https://zhuanlan.zhihu.com/p/453647757
a = "hello"
b = "hello"
print(a is b) # 输出 True
print(a == b) # 输出 True
print("=" * 30)
a = "hello world aaasdf"
b = "hello world aaasdf"
print(a is b) # 输出 False (实际测试是True)
print(a == b) # 输出 True
print("=" * 30)
a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # 输出 False
print(a == b) # 输出 True
print("=" * 30)
a = [1, 2, 3]
b = a
print(a is b) # 输出 True
print(a == b) # 输出 True
print("=" * 30)
# 在使用 a is b 的时候,相当于id(a)==id(b)
# == 是值相等,相当于调用__eq__()方法,即 a==b ==> a.__eq__(b)
Python中进行None判断时,为什么用is而不是==
https://zhuanlan.zhihu.com/p/80096499
# is None: 判断内存地址是否一致
# == None: 如果__eq__被重载结果就不一定了,要根据重载的__eq__判断返回什么
class test():
def __eq__(self, other):
return True
t = test()
print(t is None) # False
print(t == None) # True
# 'is'的效率优于'==',因为'is'不能被重载,执行'is'只是简单的获取对象id
网友评论