Python 中有 3 个不可思议的返回功能(python能做什么)

网友投稿 294 2022-09-06


Python 中有 3 个不可思议的返回功能(python能做什么)

大家好,今天给大家分享 3 个比较冷门的知识 ,在分享之前,推荐给几篇最近的好文章。

[年终汇总:20份可视化大屏模板,直接套用真香(文末附源码)]

第一个:神奇的字典键

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

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

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是接口测试?做接口测试的原因是什么?
下一篇:Spring Boot项目集成Knife4j接口文档的实例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~