这篇文章主要讲解了“Python3.8有什么新特性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python3.8有什么新特性”吧!
> ????本篇文章大约需要2分钟来阅读。届时你将学到:
如何在表达使用使用全新的赋值法:=
如何在定义方法时限制形参类型/
更好得调试代码技巧f"{expr=}"
其他需要你适应的python38
特性
(PEP 572)这将是python有史以来最大的改变,它的写法与go非常相似。使得对变量的赋值可以发生在表达式的内部。至于为什么叫海象赋值法..
我们继续看下面两个例子
常规方法
a = [0,1,2,3,4] n = len(a) if n < 10: print(f"数据长度为{n}, 且小于10")
使用海象赋值法
a = [0,1,2,3,4] if (n := len(a)) < 10: print(f"数据长度为{n}, 且小于10")
第二个方法相比第一次减少了 n = len(a)
的赋值过程,转而写在了if
表达式当中,并使n
可以继续在下文中使用。
再例如列表推导式,我们需要判断迭代每项i的计算结果ii是否符合条件,并将结果生成列表。
[ii for i in range(1,101) if (ii := i**2 ) > 200 ]
请尽量将海象运算符的使用限制在清晰的场合中,以降低复杂性并提升可读性。
(PEP 570)新增了一个函数形参语法/
用来指明某些函数形参必须使用仅限位置而非关键字参数的形式。
例如demo
方法,在/
之前的a
只可以用位置形参,在*
之后的c
只可以用关键字形参。
def demo(a, /, b, *, c): print(a, b, c) demo(1, 2, c=3) # 正确 demo(a=1, 2, 3) # 错误,a不可用关键字形参 demo(1, 2, 3) # 错误,c不可用位置形参
f'{expr=}'
记录表达式与调试文档(bro-36817)增加 =
说明符用于 f-string,它将额外输出变量的引用值,例如:
import moment today = moment.now() print(f"{today=} , have a great time ~") # output today=<moment(2019-10-18t03:32:01)> , have a great time ~
这边我们挑选了几个较为常用的特性及更新来简单列举一下
❌ yield
表达式将在推导式和生成器中不被允许使用
✅ continue
语句将在 finally
表达式中被允许使用
✅ dict
现可通过 reversed
方法按照插入顺序倒序
✅ asyncio
的任务现在可以被命名
✅ pickle
模块使用的默认协议现在为 Protocol 4
, 短小且精悍
✅ shutil
模块上的copy
相关方法效率提高26%到50%
✅ typing
模块加入了Literal
与Final
, 类型检查任重而道远
✅ pathlib
及os.path
针对部分异常字符路径将返回False
而不是报错
✅ math
模块添加了dist,hypot,prod,isqrt
4个新函数,具体详查
除了以上几项,更多新特性请访问https://docs.python.org/zh-cn/3.8/whatsnew/3.8.html
感谢各位的阅读,以上就是“Python3.8有什么新特性”的内容了,经过本文的学习后,相信大家对Python3.8有什么新特性这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。