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

Python中3个不可思议的返回函数_0

时间:2023-03-26 19:37:12 Python

第一个:魔法字典键some_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中始终具有相同的哈希值。注意:具有不同值的对象也可能具有相同的哈希值(哈希冲突)。>>>5==5.0True>>>hash(5)==hash(5.0)True执行some_dict[5]="Python"语句时,因为Python将5和5.0识别为some_dict的相同键,因此现有值“JavaScript”被“Python”覆盖第二个:异常处理中的returndefsome_func():try:return'from_try'finally:return'from_finally'Output:>>>some_func()'from_finally'????解释:当在“try...finally”语句中try中执行return、break或continue后,finally子句仍然会被执行。函数的返回值由上次Decision执行的return语句决定。由于必须执行finally子句,因此finally子句中的return将始终是要执行的最后一条语句。第三个:同一对象的判断类WTF:passOutput:>>>WTF()==WTF()#两个不同的对象不应该相等False>>>WTF()isWTF()#也不一样False>>>hash(WTF())==hash(WTF())#哈希值也应该不同True>>>id(WTF())==id(WTF())True????解释:当id函数被调用时,Python创建一个WTF类的对象并传递给id函数。然后id函数获取它的id值(也就是内存地址),然后丢弃这个对象。对象被销毁。当我们连续两次这样做时,Python将相同的内存地址分配给第二个对象。因为(在CPython中)id函数使用对象的内存地址作为对象的id值,所以两个对象的id值是相同的。综上所述,对象的id值只在对象的生命周期内是唯一的。对象销毁后或创建前,其他对象可以有相同的id值。那为什么是False呢?让我们看看这个code.classWTF(object):def__init__(self):print("I")def__del__(self):print("D")Output:>>>WTF()isWTF()IIDDFalse>>>id(WTF())==id(WTF())IDIDTrue如您所见,对象销毁的顺序是造成所有差异的原因。以上就是本次分享的全部内容。现在想学习编程的朋友欢迎关注Python技术大本营获取更多技能和教程。