Python 中这3 个神奇的返回功能,很少有人知道

image.png

大家好,最近了解到了3个比较冷门的知识,今天分享给大家。

  1. 第一个:神奇的字典键

  2. 第二个:异常处理中的return

  3. 第三个:相同对象的判断

下面我们详细展开介绍一下

第一个:神奇的字典键

image.png

Output:


image.png

"Python" 消除了 "JavaScript" 的存在?

💡 说明:

  • Python 字典通过检查键值是否相等和比较哈希值来确定两个键是否相同.

  • 具有相同值的不可变对象在Python中始终具有相同的哈希值.

注意: 具有不同值的对象也可能具有相同的哈希值(哈希冲突).

image.png

`

当执行 some_dict[5] = "Python" 语句时, 因为Python将 55.0 识别为 some_dict的同一个键, 所以已有值 "JavaScript" 就被 "Python" 覆盖了.

第二个:异常处理中的return

image.png

Output:


image.png

💡 说明:

  • 当在 "try…finally" 语句的try中执行return,breakcontinue后,finally子句依然会执行.

  • 函数的返回值由最后执行的return语句决定. 由于finally子句一定会执行, 所以finally子句中的return将始终是最后执行的语句.

第三个:相同对象的判断

image.png

Output:

image.png

💡 说明:

  • 当调用id函数时, Python 创建了一个WTF类的对象并传给id函数. 然后id函数获取其id值 (也就是内存地址), 然后丢弃该对象. 该对象就被销毁了.

  • 当我们连续两次进行这个操作时, Python会将相同的内存地址分配给第二个对象. 因为 (在CPython中)id函数使用对象的内存地址作为对象的id值, 所以两个对象的id值是相同的.

  • 综上, 对象的id值仅仅在对象的生命周期内唯一. 在对象被销毁之后, 或被创建之前, 其他对象可以具有相同的id值.

  • 那为什么is操作的结果为False呢? 让我们看看这段代码.

image.png

Output:


image.png

正如你所看到的, 对象销毁的顺序是造成所有不同之处的原因.

以上就是今天的分享,如果觉得文章还不错,那就点个赞再走吧!

关注小编,后续将持续输出更多优质文!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容