#366·wtfpython

新片段: 散列( 1)

作者: ericbn创建于 2025年1月8日更新于 2025年1月16日
标签new snippets

{\fn华文仿宋\fs16\1cHD1D1D1}快跑! 嗨,谢谢你提交了一个新的片段。 我们对此表示赞赏。

但是,我们需要一些资料和(可选的)解释来接受。 . > 时间 □ 说明

小整数的散列本身,除了-1.

□ 片段预览

[Python] i在范围(4,4): ...指印(一,散列(一)) . . . . . . . . 4 - 4 - 4 (英语).

  • 3 - 3 - 3 (韩语) -2 -2 -2 -2 -2 -1 -2 -2 -1 -2 零点 1个 2 2 个人 3 3 个

□解释

见https://omairmajid.com/posts2021-07-16-why-is-hash-in-Python/和https://www.reddit.com/r/ZPython/comments/oks5km/comment/h5a7ylc/.

由Reddit上的“u/ExoticMandibles”解释:

> Python的参考执行是"CPython",这几乎肯定是你使用的Python. CPython用C来写作,与Python不同,C没有例外. 因此,在 C 中,当您设计一个函数时,并且您希望您的函数能够显示“存在错误”,它必须返回这个错误作为其返回值.
> 翻译:
> CPython中的 hash () 函数可以返回一个错误, 因此它定义了 - 1 的返回代码, 表示“ 有错误 ” 。 但如果散列工作正确,而物体的实际散列为-1. 因此,会议是: 如果散心有效,你得到1,1,返回2。
> 翻译:
> 在CPython中,散列函数中对于英寸("长对象")有特殊代码,可以完全做到:
> 翻译:
> https://GitHub.com/Python/cpython/blob/main/Objects/longobjects.c#L2967

上面提到的CPython代码片段是:

页:1
静态 Py  hash t
long hash( 对象 *obj)
{
py uhash t x; (中文(简体) ).
//.
若 (x == (Py  uhash t) 1)
x=(py uhash t)-2; (中文(简体) ).
返回 (py hash t) x;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

□ 在要求维护者之前核对列表

  • 您是否检查过是否为相同的更新/更改没有其他打开的问题 ?
  • 您是否检查过这个片段与现有的片段并不相似?

内容来源: satwikkansal/wtfpython