正如Python文档中提到的,sys.intern()
只接受字符串对象。我理解sys.intern
不支持可变类型的原因。但至少还有一种不可变类型是有意义的:bytes
.
所以我的问题是:Python实习不支持bytes
有什么特别的原因吗?
这是十年前在Python-Dev邮件列表中建议的。答案是:
主要区别在于sys.intern()将删除被实习生当所有外部引用消失时的字符串。它要么需要weakref'ability(这是str和bytes都缺乏的),要么需要对象析构函数的特殊配合(这就是为什么sys.intern()仅限于str而不能处理任意对象)。
显然可能添加对bytes
的支持,但它似乎非常小,不是标准Python可能添加的东西。这并不妨碍您创建自己的等效函数,除非您想要它的全部原因是为了字典键查找速度。我从来没见过有人用bytes
作为字典键,但我肯定有人用。