Python 中有 3 个不可思议的返回功能
大家好,今天给大家分享 3 个比较冷门的知识 ,在分享之前,推荐给几篇最近的好文章。
推荐文章
-
[年终汇总:20份可视化大屏模板,直接套用真香(文末附源码)](https://blog.csdn.net/weixin_38037405/article/details/122103186?
第一个:神奇的字典键
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.0
True
>>> 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()
I
I
D
D
False
>>> id(WTF()) == id(WTF())
I
D
I
D
True
正如你所看到的, 对象销毁的顺序是造成所有不同之处的原因.
技术交流
欢迎转载、收藏、有所收获点赞支持一下!
目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
- 方式①、发送如下图片至微信,长按识别,后台回复:加群;
- 方式②、添加微信号:dkl88191,备注:来自CSDN
- 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
相关文章
- Python常用代码_python画图代码大全
- python语言变量命名规则有什么_Python变量命名规则(超级详细)
- Python招聘岗位信息聚合系统源码(爬虫爬取、数据分析、可视化、互动等功能)
- python截图识别文字_Python文字截图识别OCR工具实例解析
- python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」
- python海龟作图红绿灯_海龟作图—用Python绘图
- 《Python 快速入门》一千个程序员有一千套编码规范
- python语言一般用于什么_PYthon
- python生成器详解_Python 生成器
- 【说站】python图像处理是啥
- 【说站】python如何使用字典实现switch
- 【说站】python多进程如何优化显示进度条
- pandas读取excel某一行_python读取csv数据指定行列
- Python安装失败_python第三方库安装失败
- Python 生成随机数_python 随机字符串
- 【1】windows系统如何安装后缀是whl的python库
- Python 模块与包
- Python图像处理:频域滤波降噪和图像增强
- Python交互Redis的实现
- Python猜数字游戏详解编程语言
- python操作mysql数据库的简单示例详解编程语言
- Python Set intersection() 方法详解编程语言
- Python驱动Oracle数据库(python操作oracle)
- Python 七步捉虫法
- Linux下的Python开发技术之旅(linux下python开发)
- python通过zlib实现压缩与解压字符串的方法