Python 发布了版本号为 3.9.0的正式版,该版本包含了一些令人兴奋的新特性,作为爱学习的好同学还不来看看? 接下来带着大家了解一下这些特性以及它们的用法。 新的语法特性: PEP 584, 新增字典合并运算 PEP 585, 标准集合中的类型提示 PEP 614, 放宽对装饰器的语法限制 新的内置特性: PEP 616, 字符串新增移除前缀和后缀的方法 标准库的新特性: PEP 593, 灵活的函数和变量注释; os.pidfd_open() 允许在没有竞争和信号时的过程管理 Python 解释器改进: PEP 573, 通过C扩展类型的方法快速访问模块状态 PEP 617, CPython现在使用基于PEG的新解析器一些 Python 内置的语法 (range, tuple, set, frozenset, list, dict) 通过 PEP 590 vectorcall 加速; 垃圾回收机制不会限制 resurrected objects。 现在,许多Python模块(_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, math, operator, resource, time, _weakref)都使用 PEP 489 定义的多阶段初始化; 现在,许多标准库模块(audioop,ast,grp,_hashlib,pwd,_posixsubprocess,random,select,struct,termios,zlib)都使用PEP 384定义的稳定 ABI。 新的库模块: PEP 615, IANA时区数据库现在位于 zoneinfo 模块的标准库中新的 graphlib 模块中提供了图的拓扑排序的实现。Python 3.9 是提供 python2 兼容层的版本,这能给python开发者更多时间移除python2支持和支持python3.9。例如,collections 模块中 抽象基类 的别名,例如 collections.abc.Mapping 的别名 collections.Mapping 会为向下兼容最后保留一个发行版。它们将在 Python 3.10 中被移除。 我们试试新的特性吧,首先安装下python3.9吧 新的特性 1.字典合并与更新运算符合并 (|) 和 更新 (|=) 运算符已经添加到字典里了,这些补充了现有的 dict.update 和 {** d1,** d2} 合并字典的方法。 示例: >>> x={"key1":"value1 from x","key2":"value2 from x"} >>> y={"key2":"value2 from y","key3":"value3 from y"} >>> x | y{'key1':'value1 from x','key2':'value2 from y','key3':'value3 from y'} >>> y | x{'key2':'value2 from x','key3':'value3 from y','key1':'value1 from x'}``` 2.字符串的去除前缀/后缀的方法 增加了 str.removeprefix(prefix) 和 str.removesuffix(suffix) 用于方便地从字符串移除不需要的前缀或后缀。也增加了 bytes, bytearray 以及 collections.UserString 的对应方法。请参阅 PEP 616 了解详情。(由 Dennis Sweeney 在 bpo-39939 中贡献。) 3.类型的标注在类型标注中现在你可以使用内置多项集类型例如 list 和 dict 作为通用类型而不必从 typing 导入对应的大写形式类型名 (例如 List 和 Dict)。标准库中的其他一些类型现在同样也是通用的,例如 queue.Queue。 示例: def greet_all(names: list[str])->None: for name in names: print("Hello", name) 4.New ParserPython 3.9 使用于基于 PEG 的新解析器替代 LL(1)。新解析器的性能与旧解析器大致相当,但 PEG 在设计新语言特性时的形式化比 LL(1) 更灵活。我们将在 Python 3.10 及之后版本中开始使用这种灵活性。ast 模块会使用新解析器并会生成与旧解析器一致的 AST。在 Python 3.10 中,旧解析器将被移除,依赖于它的所有功能也将被移除(主要是 parser 模块,它早已被弃用)。只有 在 Python 3.9 中,你可以使用命令行开关 (-X oldparser) 或环境变量 (PYTHONOLDPARSER=1) 切换回 LL(1) 百家号的编辑器应该是我用过最难用的编辑器之一了,电脑打不开,手机端屎一样的体验 特权中心|随便|
详细解决方案
相关解决方案
- Python3.4 解释一段程序时提示SyntaxError: invalid syntax异常
- python3.4 编译时提示异常 IndentationError: unexpected indent
- python3.2运用pywin32连接SQLServer2008
- Python3.x:从其他类访问self.xxx变量而不继承
- 在 Python3 中不使用 FOR 的模式匹配后返回一个巨大文件的确切行
- 在运行脚本的命令前面使用的“ th”,“ python”,“ python3”,“ java”等是什么?
- Python3.6和单例-用例和并行执行
- 无法在 Linux 上使用 python3 和 cx_Oracle 作为外部识别用户进行连接
- 短语突出显示QEditText PyQt4 Python3
- 打印/获取字典中每个嵌套项目的完整路径 - Python3
- python3 判断列表是否存在某元素
- python3 issubset 判断列表子集
- Python3 教程
- Python3 socket
- python3 list int转bytes
- python3.6读取tar.bz2文件
- python3.6 matplotlib无法正常显示图片(Agg问题)
- python3.6怎么在当前目录上一层创建文件夹
- python3 利用pysql将sql取出数据转为字典列表类型
- python3 将字典转化为字符串后按特定格式输出
- Python3 求两个数的最大公约数和最小公倍数
- python3 IO模块源代码查询方式
- python3 晚会抽奖系统
- python3 redis集群
- Python3 pickle模块序列化反序列化
- python3 随机种子生成随机数
- python3.6 以上 f-string 输出的数字格式探索
- python3 is not recognized
- python3-绘制图形
- python3 通过excel发送邮件报错解决办法