锵锵锵锵锵!Python 3.10 来啦!!分享 3 个让小师妹眼前一亮的好玩东东!
本帖最后由 鱼C-小师妹 于 2021-10-13 18:54 编辑https://www.bilibili.com/video/BV1W34y1S74u?spm_id_from=333.999.0.0
传送门
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 后接下来的操作以元组为基本单位。
但是有一个有些致命的隐含问题:
**** Hidden Message *****
就像酱紫:
In : a=
In : b=['a','b']
In : for i in zip(a,b):
...: print(i)
...:
(1, 'a')
(2, 'b')
为了解决这个问题,zip 添加了一个布尔类型的参数 strict。
先来看看 3.10 以前 zip 原型:
zip(*iterables)
3.10 以后增加一个布尔类型参数 strict,默认为 False:
zip(*iterables, strict=False)
只有当其为 True 时,打包的可迭代对象长度不一致时会抛异常;
当为 False 时,与之前版本的 zip 完全相同,因此 zip 是完全向后兼容的。
https://www.bilibili.com/video/BV1HT4y1K7DY?p=19
下一讲小讲堂就准备基于这个 zip 新特性来出个案例,准备好踩坑吧,哈哈哈哈~
上面就是 3 个让小师妹眼前一亮的好玩东东!
其他的一些比较有实质性变化的更新:
[*]新的类型标注特性
[*]重要的弃用、移除或限制,如PEP 632,弃用 distutils 模块。
[*]新的特性:带圆括号的上下文管理器
[*]更清楚的错误消息
如果你还知道 3.10 什么有趣的玩法,欢迎下方留言和热爱学习的我们一起交流下~
好啦,下课~ 我得将办公室的电脑升级到win10了,要不没法享用python的新版了。 以前我是用itertools的zip_longest来解决可迭代对象不等长问题,现在简单了。 学习学习 冬雪雪冬 发表于 2021-10-12 08:39
我得将办公室的电脑升级到win10了,要不没法享用python的新版了。
还真是{:5_98:} 1 {:5_105:} {:10_268:} {:10_323:} 0000 感觉没什么动力装3.10,我才装上不到半个钟又卸了,还在用3.7.9 芜湖{:10_257:} 3.8的路过 感觉没啥好更新的
用 vscode 就能解决括号没有关闭的问题
matach case 感觉 if 就可以替代了?如果是我没发现实际用法,请轻喷
zip 我没用过,对我没啥影响{:10_245:}
3.8.6 还稳定一点,而且有我喜欢的海象运算符,3.8 之前的都没有
好多 package 因为年久失修,疏于维护,不支持很新的版本{:10_247:} 3.8.1 路过 PS: case _ = default {:5_95:} Daniel_Zhang 发表于 2021-10-13 01:01
感觉没啥好更新的
用 vscode 就能解决括号没有关闭的问题
确实 3.8.x 目前最稳定 怎么直接升级?
页:
[1]
2