gpt4 book ai didi

Python 中有 三个不可思议的返回功能

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 32 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python 中有 三个不可思议的返回功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Python 中有 三个不可思议的返回功能

今天给大家分享 3 个比较冷门的知识 。

第一个:神奇的字典键 。

some_dict = {}some_dict[5.5] = "Ruby"some_dict[5.0] = "JavaScript"some_dict[5] = "Python"

Output

>>> some_dict[5.5]"Ruby">>> some_dict[5.0"Python">>> some_dict[5]"Python"

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

说明

  • Python 字典通过检查键值是否相等和比较哈希值来确定两个键是否相同.
  • 具有相同值的不可变对象在Python中始终具有相同的哈希值.

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

>>> 5 == 5.0True>>> hash(5) == hash(5.0)True

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

第二个:异常处理中的return 。

def some_func():    try:        return 'from_try'    finally:        return 'from_finally'

Output

>>> some_func()'from_finally'

说明

  • 当在 "try…finally" 语句的 try 中执行 return, break 或 continue 后, finally 子句依然会执行.
  • 函数的返回值由最后执行的 return 语句决定. 由于 finally 子句一定会执行, 所以 finally 子句中的 return 将始终是最后执行的语句.

第三个:相同对象的判断 。

class WTF:  pass

Output

>>> WTF() == WTF() # 两个不同的对象应该不相等False>>> WTF() is WTF() # 也不相同False>>> hash(WTF()) == hash(WTF()) # 哈希值也应该不同True>>> id(WTF()) == id(WTF())True

说明

  • 当调用 id 函数时, Python 创建了一个 WTF 类的对象并传给 id 函数. 然后 id 函数获取其id值 (也就是内存地址), 然后丢弃该对象. 该对象就被销毁了.
  • 当我们连续两次进行这个操作时, Python会将相同的内存地址分配给第二个对象. 因为 (在CPython中) id 函数使用对象的内存地址作为对象的id值, 所以两个对象的id值是相同的.
  • 综上, 对象的id值仅仅在对象的生命周期内唯一. 在对象被销毁之后, 或被创建之前, 其他对象可以具有相同的id值.
  • 那为什么 is 操作的结果为 False 呢? 让我们看看这段代码.
class WTF(object):  def __init__(self): print("I")  def __del__(self): print("D")

Output

>>> WTF() is WTF()IIDDFalse>>> id(WTF()) == id(WTF())IDIDTrue

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

原文链接:https://github.com/leisurelicht/wtfpython-cn 。

以上就是今天的分享,如果你觉得文章还不错,请大家 给个三连哈 , 。

最后此篇关于Python 中有 三个不可思议的返回功能的文章就讲到这里了,如果你想了解更多关于Python 中有 三个不可思议的返回功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com