知行编程网知行编程网  2022-05-02 06:00 知行编程网 隐藏边栏 |   抢沙发  2 
文章评分 0 次,平均分 0.0






Python 中 3 个不可思议的返回


来源:

https://github.com/leisurelicht/wtfpython-cn

第一个:神奇的字典键

Output:


"Python" 消除了 "JavaScript" 的存在?

说明:

  • Python 字典通过检查键值是否相等和比较哈希值来确定两个键是否相同.

  • 具有相同值的不可变对象在Python中始终具有相同的哈希值.


注意: 具有不同值的对象也可能具有相同的哈希值(哈希冲突).



  • 当执行 some_dict[5] = "Python" 语句时, 因为Python将 5 和 5.0 识别为 some_dict 的同一个键, 所以已有值 "JavaScript" 就被 "Python" 覆盖了.

  • 这个 StackOverflow的 回答(https://stackoverflow.com/a/32211042/4354153) 漂亮的解释了这背后的基本原理.


第二个:异常处理中的return

Output:


 说明:

  • 当在 "try...finally" 语句的 try 中执行 returnbreak 或 continue 后, finally 子句依然会执行.

  • 函数的返回值由最后执行的 return 语句决定. 由于 finally 子句一定会执行, 所以 finally 子句中的 return 将始终是最后执行的语句.


第三个:相同对象的判断

Output:

说明:

  • 当调用 id 函数时, Python 创建了一个 WTF 类的对象并传给 id 函数. 然后 id 函数获取其id值 (也就是内存地址), 然后丢弃该对象. 该对象就被销毁了.

  • 当我们连续两次进行这个操作时, Python会将相同的内存地址分配给第二个对象. 因为 (在CPython中) id 函数使用对象的内存地址作为对象的id值, 所以两个对象的id值是相同的.

  • 综上, 对象的id值仅仅在对象的生命周期内唯一. 在对象被销毁之后, 或被创建之前, 其他对象可以具有相同的id值.

  • 那为什么 is 操作的结果为 False 呢? 让我们看看这段代码.

)

    Output:

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

<p style="margin-left: 0px;margin-right: 0px;"><span style="font-size: 15px;"><strong>近期热门:</strong><br  /></span></p><p style="margin: 10px 0px 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);font-size: 15px;">● </span><span style="color: rgb(0, 122, 170);font-size: 15px;text-decoration: underline;">我的神!用Python竟然还能做一个文字套娃</span></p><p style="margin: 10px 0px 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;">● 我珍藏的一些好的Python代码,技巧|上篇</p><p style="margin: 10px 0px 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);font-size: 15px;">● <span style="text-decoration: underline;">爬取300本Python书籍,用Python告诉你哪家强?</span></span></p><p style="margin: 10px 0px 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="color: rgb(0, 122, 170);font-size: 15px;">● </span><span style="color: rgb(0, 122, 170);font-size: 15px;text-decoration: underline;">卧槽!Pdf转Word用Python轻松搞定!</span></p><p style="margin: 10px 0px 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="font-size: 15px;"><span style="color: rgb(0, 122, 170);">● </span><span style="color: rgb(0, 122, 170);text-decoration: underline;">我打赌,学会这6招,谁再敢笑你的Python程序慢!</span></span></p><p style="margin: 10px 0px 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="font-size: 15px;"><br  /></span></p><p style="margin: 10px 0px 5px;padding-right: 0em;padding-left: 0em;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;white-space: normal;widows: 1;word-spacing: 10px;letter-spacing: 1.5px;line-height: normal;"><span style="font-size: 15px;"><span style="font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;text-align: left;widows: 1;background-color: rgb(255, 255, 255);word-spacing: 2px;caret-color: rgb(62, 62, 62);letter-spacing: 0.544px;color: rgb(255, 41, 65);font-size: 15px;"><strong><span style="letter-spacing: 0.544px;border-color: rgb(127, 127, 127);">点击阅读原文,直达菜鸟B站大本营</span></strong></span></span></p>
<p style="text-align: right;"><br  /></p>

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享