当前位置: 首页 > 后端技术 > Python

3神奇的Python返回值

时间:2023-03-25 23:06:25 Python

第一:神奇的字典keysome_dict={}some_dict[5.5]="Ruby"some_dict[5.0]="JavaScript"some_dict[5]="Python"输出:>>>some_dict[5.5]"Ruby">>>some_dict[5.0]"Python">>>some_dict[5]"Python""Python"消除了“JavaScript”的存在?解释:Python字典检查键是否相等并比较哈希值以确定两个键是否相同具有相同值的不可变对象在Python中始终具有相同的哈希值注意:具有不同值的对象也可能具有相同的哈希值hashvalue(hashcollision)>>>5==5.0True>>>hash(5)==hash(5.0)True执行some_dict[5]="Python"语句时,因为Python将5和5.0识别为同一个keysome_dict,所以有值“JavaScript”被“Python”覆盖这个StackOverflow答案(https://stackoverflow.com/a/3...)很好地解释了这背后的基本原理第二:returndefsome_func在异常处理中:try:return'from_try'finally:return'from_finally'输出:>>>some_func'from_finally'描述:在“try...finally”语句的try中执行return、break或continue后,finally子句仍会执行.函数的返回值由最后执行的return语句决定。由于finally子句必须被执行,所以finally子句中的return总是最后执行的语句。第三种:同一个对象类的判断WTF:passOutput:>>>WTF==WTF#两个不同的对象不应该相等False>>>WTFisWTF#不一样False>>>hash(WTF)==hash(WTF)#hash值也应该不一样True>>>id(WTF)==id(WTF)True说明:在调用id函数时,Python会创建一个WTF类的对象,并将其传递给id函数,并且然后id函数获取它的id值(也就是内存地址),然后丢弃这个对象,这个对象就被销毁了。当我们连续两次这样做时,Python会为第二个对象分配相同的内存地址,因为(在CPython中)id函数使用对象的内存地址作为对象的id值,所以id值的两个对象是相同的。综上所述,一个对象的id值只在该对象的生命周期内是唯一的。在对象被销毁之后,或者在它被创建之前,其他对象可以有相同的id值。那么为什么is操作的结果是False呢?让我们看看这段代码。classWTF(object):def__init__(self):print("I")def__del__(self):print("D")输出:>>>WTFisWTFIIDDFalse>>>id(WTF)==id(WTF)IDIDTrue如您所见,对象销毁的顺序是造成所有差异的原因。文渊网络仅供学习使用,如有侵权,请联系删除。我的公众号【Python圈】汇集了优质的技术文章和经验总结。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,600+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕学不会!还有学习交流群,一起学习进步~