美文网首页
python中None,is和==的深入探讨

python中None,is和==的深入探讨

作者: 来到了没有知识的荒原 | 来源:发表于2023-04-09 15:32 被阅读0次

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

相关文章

网友评论

      本文标题:python中None,is和==的深入探讨

      本文链接:https://www.haomeiwen.com/subject/lembddtx.html