当前位置: 首页 > news >正文

Python 3.12新功能(1)

Python 3.12正式发布已经很久了,我才将主要电脑的Python版本从3.11升级到最新。最近刚好工作没有那么紧张了,就来领略下这个最新版本中的新特性。

 

改善了错误消息

Python作为一门编程语言,简单易学容易上手,童叟无欺,深受广大码农的厚爱。其中有一点需要归功于它相对友好的出错消息。通常很容易从出错的提示信息知道代码哪里出了语法或逻辑错误。从Python 3.10开始,很多Python的错误消息,尤其是语法错误的提示,越来越精准有用了。现在很多出错的消息里边,不仅仅告诉你哪里出错了,Python甚至更进一步给出了修正问题的建议。

让我们来看几个例子吧。

第一个例子:使用了未导入的包

先来看Python 3.11中是什么情况。

>>> sys.version_info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined

再来对比一下Python 3.12是如何爱我们码农的。

>>> sys.version_info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined. Did you forget to import 'sys'?

感受到Python越来越优秀了吗?

第二个例子:包导入的语法

>>> import a.y.z from b.y.z
  File "<stdin>", line 1
    import a.y.z from b.y.z
    ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Did you mean to use 'from ... import ...' instead?

如果哪位同学,因为工作需要,频繁地在多种编程语言中切换的,对这个提示应该是非常喜欢滴。(我就常常会弄混import语法,不论是用Python, JAVA或者TS/JS)

第三个例子:导入包的拼写错误

对比一下Python 3.11和3.12.

>>> from collections import chainmap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'chainmap' from 'collections' (C:\Users\bruce\.pyenv\pyenv-win\versions\3.11.3\Lib\collections\__init__.py)

>>> from collections import chainmap
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'chainmap' from 'collections' (C:\Users\bruce\AppData\Local\Programs\Python\Python312\Lib\collections\__init__.py). Did you mean: 'ChainMap'?

(时间有限,今天先码字到这里了。)后续再看其他的更多新特性,欢迎大家评论或私信交流,一起做更棒的开发者!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植篇-第七十三章内核添加网卡驱动
  • 布隆过滤器
  • 组蛋白乳酸化和RNA甲基化如何联动?请大数据把这个思路推给科研人
  • 五粮液提价获渠道积极反馈:增强信心、促进动销、利好产业
  • 医疗器械产品没有互联网连接,就不适用于网络安全要求吗?
  • Llama 3.1:Meta 的开源 AI 巨兽,智能新高度
  • Java中常用的配置类:最佳实践与示例
  • [C++] 容器适配器:深入理解Stack与Queue的底层原理
  • 使用 Elasticsearch 和 LlamaIndex 保护 RAG 中的敏感信息和 PII 信息
  • vue 双向绑定原理
  • 【文件解析漏洞】实战详解!
  • python:plotly 网页交互式数据可视化工具
  • 我是客服新手,打字很慢,怎么办?
  • OpenCV 图像处理 轮廓检测基本原理
  • JDK 8 升级 17 及 springboot 2.x 升级 3.x 指南
  • CentOS7 安装JDK
  • Docker 笔记(2):Dockerfile
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Javascript弹出层-初探
  • Javascript设计模式学习之Observer(观察者)模式
  • React的组件模式
  • VuePress 静态网站生成
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 第2章 网络文档
  • 给Prometheus造假数据的方法
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 嵌入式文件系统
  • 为视图添加丝滑的水波纹
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​渐进式Web应用PWA的未来
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ###STL(标准模板库)
  • #DBA杂记1
  • #etcd#安装时出错
  • #每天一道面试题# 什么是MySQL的回表查询
  • (3)(3.5) 遥测无线电区域条例
  • (3)选择元素——(17)练习(Exercises)
  • (4) PIVOT 和 UPIVOT 的使用
  • (42)STM32——LCD显示屏实验笔记
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (四)js前端开发中设计模式之工厂方法模式
  • .env.development、.env.production、.env.staging
  • .NET MVC 验证码
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net6使用WebSocket与前端进行通信
  • .NET应用架构设计:原则、模式与实践 目录预览
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Bean注解详解
  • [ 数据结构 - C++] AVL树原理及实现
  • [20170728]oracle保留字.txt
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [2544]最短路 (两种算法)(HDU)
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计