Python3.8正式发布,这些特性令人眼前一亮
在2019年10月14号,python38第一版以正式发布。所以屏幕面前的各位2.7忠粉,你们到底还在等什么❓那么3.8版本能给大家带来怎样的全新体验,让我们一起看看吧。
> 🍺本篇文章大约需要2分钟来阅读。届时你将学到:
- 如何在表达使用使用全新的赋值法
:=
- 如何在定义方法时限制形参类型
/
- 更好得调试代码技巧
f"{expr=}"
- 其他需要你适应的
python38
特性
0x01 海象赋值法
(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 ]
请尽量将海象运算符的使用限制在清晰的场合中,以降低复杂性并提升可读性。
0x02 仅限位置形参
(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不可用位置形参
0x03 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 ~
0x04 部分常用语言特性更新及性能变化(✨简报)
这边我们挑选了几个较为常用的特性及更新来简单列举一下
- ❌
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
更多精彩尽在公众号:进击的Hunter
</moment(2019-10-18t03:32:01)>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号【Java技术江湖】的《走进JavaWeb技术世界》其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有侵权,请联系作者。 该系列博文会告诉你如何从入门到进阶,从servlet到框架,从ssm再到SpringBoot,一步步地学习JavaWeb基础知识,并上手进行实战,接着了解JavaWeb项目中经常要使用的技术和组件,包括日志组件、Maven、Junit,等等内容,以便让你更完整地了解整个JavaWeb技术体系,形成自己的知识框架。 如果对本系列文章有什么建议,或者是有什么疑问的话,也可以关注公众号【Java技术江湖】联系作者,欢迎你参与本系列博文的创作和修订。 文末赠送8000G的Java架构师学习资料,需要的朋友可以到...
- 下一篇
白话短信协议
白话短信协议 我们都知道短信其实也是通过网络传输的,不过走的是核心网,那既然同样走的是网络,那这些数据不外乎01010...,那手机是怎么把这串01010...翻译成我们看到的文字短信的呢? 其实短信协议和我们HTTP很相似,是基于TCP/IP的协议,短信协议也包含信息头和信息体,其每个部分都有规定的含义 接下来通过白话的方式向你解释这个协议,在这之前,有两个概念先介绍一下 PDU(Protocol Data Unit): 代表我们一条短信的整个数据,也叫一个包 UDH(User Data Header): 数据头 UD(User Data): 数据体 一个PDU包含一个UDH以及一个UD,那一个PDU就是这个样子: 那接下来我们用个最常见的例子,也就是我们平时看到最多的普通文本短信为例子,挨个解释一下每个部分具体包含了哪些内容 UDH(User Data Header) 这儿也先介绍两个概念 IE(Information Element): 表示一个UDH单元 IED(IE Data): 包含一个IE的内容 IEL(Length of IE): 表示一个IED所占用的字节长度 IEI...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果