颠覆你认知的Python3.9
我通读了python 3.9发行说明和相关的讨论。根据这些信息,我想写一个全面的指南,以便每个人都能一眼了解这些功能及其详细的工作原理
简而言之
从字典更新/合并到添加新的字符串方法,再到引入zoneinfo
库,都添加了许多新功能。
此外,已经引入了新的稳定且高性能的解析器。
标准库已更新为具有许多新功能,并增加了新的模块zoneinfo
和graphlib
。多个模块已经过改进,如ast,asyncio,concurrent.futures,multiprocessing,xml
等.
这个版本进一步稳定了Python标准库
字典更新和合并运算符
两个新的运算符,|
并且|=
已添加到内置dict
类中。
该|运算符用于合并的字典,而|=运营商可用于更新词典。
代码对于合并:|
>>> a = {'farhad':1, 'blog':2, 'python':3}
>>> b = {'farhad':'malik', 'topic':'python3.9'}
>>> a | b
{''blog':2,'python':3 ,'farhad':'malik', 'topic':'python3.9'}>>> b | a
{'farhad':1, 'blog':2,'python':3,'topic':'python3.9'}
更新: =|
>>> a | = b
>>> a
{'blog':2, 'python':3, 'farhad':'malik'}
正如我们在上面看到的,两个新的运算符|
和|=
已被添加到内置dict
类中
删除前后缀新字符串
str对象中已添加了两个新功能。
第一个函数删除前缀。是的
str.removeprefix(prefix)
第二个功能删除后缀。是的
str.removesuffix(suffix)
'coxie_python'.removeprefix('coxie_')
# 返回python
'coxie_python'.removesuffix('_python')
# 返回coxie
- 第一个函数删除前缀。这是str.removeprefix(prefix).
- 第二个功能删除后缀。它是str.removesuffix(suffix).
内置通用类型的类型提示
此版本已启用了键入模块中当前可用的所有标准集合中对泛型语法的支持。
泛型类型通常是一个容器,例如列表。这是可以参数化的类型。参数化的泛型是泛型的实例,具有容器元素的预期类型,例如list [str]
我们可以将list
或dict
内置集合类型用作通用类型,而不是使用typing.List or typing.Dict.
例如,我们可以通过注释代码来指导Python运行时类型检查:
def print_value(input:str):
print(input)
#如果输入不是字符串,我们将得到通知
举例来说,我们会看到typing.List,typing.Dictionary
带有内置一起list,dictionary
等。这使我们能够编写代码:
def read_blog_tags(tags:list[str[) -> None
for dtag in tags:
print("Tag Name",tag)
随机字节生成
在3.9版本中添加的另一个功能是function random.Random.randbytes()
。该函数可用于生成随机字节。
我们可以生成随机数,但是如果我们需要生成随机字节怎么办?在3.9版之前,开发人员必须具有创造力才能生成随机字节。尽管我们可以使用,os.getrandom(), os.urandom() or secrets.token_bytes()
但是我们不能生成伪随机模式。
例如,为确保随机数以预期的方式生成且过程可重现,我们通常将种子与random.Random
模块一起使用。
结果,random.Random.randbytes()
已经引入了方法。它也可以以受控方式生成随机字节。
字符串替换功能修复
在Python 3.9之前的版本中,“”.replace(“”,s,n)
对于所有非零n ,返回的空字符串而不是s。
此错误使用户感到困惑,并导致应用程序中行为不一致。
3.9版本已解决此问题,现在与保持一致"".replace("", s)
。
replace
函数的工作方式是,对于给定的最大替换发生参数,它将字符串中的一组字符替换为一组新的字符。
srting.replace(s,old,new,[,maxreplace])
# 返回字符串 s的副本,其中所有出现的子字符串old都被new替换
颠覆你认知的Python3.9的更多相关文章
- 一文带你深入理解JVM,看完之后你还敢说你懂JVM吗?颠覆you认知
前言 今天带大家深入理解JVM,从入门到精通,希望大家能够喜欢~~~ 概念 JVM是可运行 Java 代码的假想计算机 ,包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收,堆 和 一个存储方法域 ...
- linux /dev/null 中有数据
前段时间有个同事问我说,他 cat /dev/null有数据.这个颠覆大家认知的问题最终却是个小问题. 我们来看/dev/null的操作函数: static const struct memdev { ...
- 2017.5.11 昨天晚上看fview直播坚果pro回放
对话1 彭林: 我以前也是产品经理,身为产品经理,你有没有感觉我们做出过什么之前不被人接受的东西,但是我们却坚持做了,并且得到的反响非常好. 朱萧木: 没有吧,我们没有做颠覆用户认知或者三观的特别 ...
- Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。
Python3 与 C# 面向对象之-继承与多态 文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...
- 全景智慧城市——NOW!!!VRSHOPPING颠覆你的购物认知!
互联网+时代,人们对现有的网络资源已经不再感冒,一般的图片.文字信息已经无法满足人们对互联网的需求,虚拟现实.身临其境的体验是不可小觑的发展趋势,尤其是VR逛街.购物,更会深入人心,再次改变人们的生活 ...
- 记一次sql索引颠覆认知
首先先建立数据库和插入数据 我们要查询的命令如下,前提是以mysql数据库为准 , 结果和我想的不太一样,先准备好环境和所需的数据库和表 准备阶段 CREATE TABLE `test` ( `id` ...
- nginx & flup & django & python3.x @ window7配置备忘录
最近考虑原Prism建筑(非职业.半专业人士认为C/S建筑)至B/S迁移,主要是由于部署问题,包括两个因素:已经做,虽然一键安装和部署的一个因素,心存顾虑,虽然我一再声明这是一个绿色软件.还有一个因素 ...
- win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置
写在前面的话: 再弄这个之前,我对python也好,tensorflow也好几乎是0认知的,所以配置这个环境的时候,走了不少弯路,整整耗费了一个星期的时间才搭配完整这个环境,简直了...然而最气的是, ...
- 小甲鱼Python3笔记
000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...
随机推荐
- Caffe入门:对于抽象概念的图解分析
Caffe的几个重要文件 用了这么久Caffe都没好好写过一篇新手入门的博客,最近应实验室小师妹要求,打算写一篇简单.快熟入门的科普文. 利用Caffe进行深度神经网络训练第一步需要搞懂几个重要文件: ...
- SpringBoot进阶教程(七十)SkyWalking
流行的APM(Application Performance Management工具有很多,比如Cat.Zipkin.Pinpoint.SkyWalking.优秀的监控工具还有很多,其它比如还有za ...
- 重学c#————struct
前言 简单整理一下struct. 正文 struct 对于struct 而言呢,我们往往会拿class作为对比,但是呢,我们在初学阶段用class来替代struct,struct的存在感越来越低了. ...
- svn conflict & svn cleanup
svn conflict & svn cleanup OK $ svn --help $ svn cleanup Tree Conflicts https://tortoisesvn.net/ ...
- H5 页面与小程序之间 传递数据
H5 页面与小程序之间 传递数据 小程序里面的 H5页面与小程序之间怎么传递数据 webview与小程序之间的实时通信 webview主动发消息给小程序 webview可以利用jssdk提供的 wx. ...
- nasm astrchr函数 x86
xxx.asm: %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export as ...
- 《Asp.Net Core3 + Vue3入坑教程》-Net Core项目搭建与Swagger配置步骤
简介 <Asp.Net Core3 + Vue3入坑教程> 此教程仅适合新手入门或者前后端分离尝试者.可以根据图文一步一步进操作编码也可以选择直接查看源码.每一篇文章都有对应的源码 教程后 ...
- wxWidgets源码分析(8) - MVC架构
目录 MVC架构 wxDocManager文档管理器 模板类创建文档对象 视图对象的创建 创建顺序 框架菜单命令的执行过程 wxDocParentFrame菜单入口 wxDocManager类的处理 ...
- Wireguard 全互联模式(full mesh)配置指南
上篇文章给大家介绍了如何使用 wg-gen-web 来方便快捷地管理 WireGuard 的配置和秘钥,文末埋了两个坑:一个是 WireGuard 的全互联模式(full mesh),另一个是使用 W ...
- 基于Hi3559AV100的SVP(NNIE)开发整体流程
在之后的hi3559AV100板载开发中,除了走通V4L2->VDEC->VPSS->VO(HDMI)输出,还有需要进行神经网络的开发学习,进行如face detection的开发等 ...