python 中的可变(不可变)对象以及可哈希(不可哈希)的定义

可变(不可变)对象

当改变一个对象的值时,如果能维持其 id 值不变,我们就说这个对象是可变的,否则这个对象就是不可变的。

对于变量 x 来说,如果 id(x) 不随 x 的内容发生变化而变化,我们就说 x 是可变的;否则 x 就是不变的。

常见的可变对象有字典,列表,常见的不可变对象有数字,字符串,元组。

可哈希(不可哈希)对象

参考官方文档的解释:

如果一个对象在其生命周期内有一个固定不变的哈希值 (这需要__hash__()方法) 且可以与其他对象进行比较操作 (这需要__eq__()方法) ,那么这个对象就是可哈希对象 (hashable) 。可哈希对象必须有相同的哈希值才算作相等。
由于字典 (dict) 的键 (key) 和集合 (set) 内部使用到了哈希值,所以只有可哈希 (hashable) 对象才能被用作字典的键和集合的元素。
所有python内置的不可变对象都是可哈希的,同时,可变容器 (比如:列表 (list) 或者字典 (dict) ) 都是不可哈希的。用户自定义的类的实例默认情况下都是可哈希的;它们跟其它对象都不相等 (除了它们自己) ,它们的哈希值来自id()方法。

参考文章

作者:恢恢_b083
标题:聊一聊Python中的hashable和immutable
链接:https://www.jianshu.com/p/49f940b2c03e

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值