|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 鱼C-小师妹 于 2021-10-13 18:54 编辑
传送门
Python 3.10 正式发布啦!!
小师妹快速浏览上面的官方页面,发现两个有趣的东东:一个是语法类,一个是标记库函数。
有言在先,记得先把你们的 Python 升级到 3.10 哈~
更新完以后 shell 就是这个样子:
第一个很棒的提升点就是将“错误消息”指向的更明确。
现在当解析包含有未关闭括号的代码时,解释器会包括未关闭括号的位置而不是显示 SyntaxError: unexpected EOF while parsing 并指向某个不正确的位置。
例如,考虑以下代码,注意未关闭的 “ { ”):
- expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
- 38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6,
- some_other_code = foo()
复制代码
之前版本的解释器会报告令人迷惑的语法错误位置:
- File "example.py", line 3
- some_other_code = foo()
- ^
- SyntaxError: invalid syntax
复制代码
但在 Python 3.10 中则会发出信息量更多的错误提示:
- File "example.py", line 1
- expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,
- ^
- SyntaxError: '{' was never closed
复制代码
错误出处指向很明确。
类似地,涉及未关闭字符串字面值 (单重引号和三重引号) 的错误现在会指向字符串的开头而不是报告 EOF/EOL。
1、match..case.. 语法
熟悉 C++ 或者 JavaScript 的程序员对于 switch 和 case 应该不会陌生。
但是对于之前的 Python 版本是没有类似的语法滴。
不过从 3.10 开始 Python 终于有类似语法了!
那就是 match..case..,语法结构很简单,来看例子:
- def iLoveFishc(status):
- match status:
- case 400:
- return "错误请求"
- case 401 | 403 :
- return "不准"
- case 404:
- return "没找到"
- case 200:
- return "访问成功,祝自学编程顺利"
- case _:
- return "你的网络有问题啦"
复制代码
和 switch..case.. 玩法一毛一样~
2、严谨的 zip 方法
小甲鱼老师在最新版 Python 课程中的字典部分介绍了 zip 的玩法,很详尽,竟然和 3.10 新特性不谋而合,真的是厉害~
zip 打包多个可迭代对象,配合 for 后接下来的操作以元组为基本单位。
但是有一个有些致命的隐含问题:
就像酱紫:
- In [43]: a=[1,2,3]
- In [44]: b=['a','b']
- In [45]: for i in zip(a,b):
- ...: print(i)
- ...:
- (1, 'a')
- (2, 'b')
复制代码
为了解决这个问题,zip 添加了一个布尔类型的参数 strict。
先来看看 3.10 以前 zip 原型:
3.10 以后增加一个布尔类型参数 strict,默认为 False:
- zip(*iterables, strict=False)
复制代码
只有当其为 True 时,打包的可迭代对象长度不一致时会抛异常;
当为 False 时,与之前版本的 zip 完全相同,因此 zip 是完全向后兼容的。
下一讲小讲堂就准备基于这个 zip 新特性来出个案例,准备好踩坑吧,哈哈哈哈~
上面就是 3 个让小师妹眼前一亮的好玩东东!
其他的一些比较有实质性变化的更新:
- 新的类型标注特性
- 重要的弃用、移除或限制,如PEP 632,弃用 distutils 模块。
- 新的特性:带圆括号的上下文管理器
- 更清楚的错误消息
如果你还知道 3.10 什么有趣的玩法,欢迎下方留言和热爱学习的我们一起交流下~
好啦,下课~ |
评分
-
查看全部评分
|