多平台统一管理软件接口,如何实现多平台统一管理软件接口
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~