`dict().values in dict()` 在 Python 3.7 中失败但在 Python 3.11 中成功
`dict().values in dict()` fails in Python 3.7 but succeeds in Python 3.11
于 Python 3.7.13
dict().values in dict()
给予,
TypeError: unhashable type: 'dict'
于 Python 3.11,
dict().values in dict()
给予,
False
此更改的原因是什么?
表达式dict().values
的结果是一个“方法包装器”;包含方法的对象 and 要调用该方法的对象。
如果你这样做,例如,
hash(dict().__str__)
你在 3.7 中得到异常,但在以后的版本中没有。不同之处在于函数 wrapper_hash
in CPython which has changed 从散列包装对象——因此错误消息中的 'dict'
,即使我们没有(明确地)散列字典——改为使用它的标识。
于 Python 3.7.13
dict().values in dict()
给予,
TypeError: unhashable type: 'dict'
于 Python 3.11,
dict().values in dict()
给予,
False
此更改的原因是什么?
表达式dict().values
的结果是一个“方法包装器”;包含方法的对象 and 要调用该方法的对象。
如果你这样做,例如,
hash(dict().__str__)
你在 3.7 中得到异常,但在以后的版本中没有。不同之处在于函数 wrapper_hash
in CPython which has changed 从散列包装对象——因此错误消息中的 'dict'
,即使我们没有(明确地)散列字典——改为使用它的标识。