导读:Python 3.9来了,有哪些新特性值得学,值得用?

Python 2.9(5.10.2020)已经发布了一段时间,最后一个Alpha版(3.9.0a5)近期发布了测试版。开发者应该看新版有哪些新功能,改进和修复。

安装测试版

本节尝鲜安装Python 3.9,但不要破坏稳定版本的Python解释。命令如下:

wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgztar xzvf Python-3.9.0a5.tgzcd Python-3.9.0a5./configure --prefix=$HOME/python-3.9.0a5makemake install$HOME/python-3.9.0a5/bin/python3.9

运行以上指令后,我们会收到IDLE和欢迎消息。类似于如下:

Python 3.9.0a5 (default, Apr 16 2020, 18:57:58)[GCC 9.2.1 20191008] on linuxType "help", "copyright", "credits" or "license" for more information.

新的字典运算符

最明显的新特性大概是新的字典合并运算符 _ 或 .

从现在开始,你有3个选项来合并字典:| |=

来看如下代码:

# Dictionaries to be merged:d1 = {"x": 1, "y": 4, "z": 10}d2 = {"a": 7, "b": 9, "x": 5}# Expected output after merging{'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}# ^^^^^ Notice that "x" got overridden by value from second dictionary# 1. Optiond = dict(d1, **d2)# 2. Optiond = d1.copy()  # Copy the first dictionaryd.update(d2)   # Update it "in-place" with second one# 3. Optiond = {**d1, **d2}

上面第一个选项函数使用初始化字典,第一个参数是普通字典,第二个是Key/Value对的列表。在此种情况下,只是使用运算符解压缩到另一个字典。

dict(iterable, **kwargs)**

第二种方法是使用第二个字典来更新第一个字典。因为此字典在原位上修改,我们需要将第一个副本复制到变量中,以避免修改原始变量。

第三种方法也是最后一个。在我看来,最干净的解决方案就是使用字典解包和解压缩两个变量到一个结果。

d1 d2 d

是的,即便以上选项是完全等价的,我们现在使用新的运算符提供新的解决方案。

|

# Normal mergingd = d1 | d2# d = {'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}# In-place mergingd1 |= d2# d1 = {'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}

可以看到,此段代码的第一个示例与前面的运算符解包(d = {**d1, **d2})很相似。第二个示例可用于立即合并,其中原始变量d1被第二个操作数d2的值立即更新。

IPv6范围地址

Python 3.9中引入的另一个更改是可以指定IPv6地址的范围。如果您不熟悉IPv6范围,它们将用于指定相应IP地址在Internet的哪个部分有效。范围可以在IP地址的末尾使用%符号指定-例如:3FFE:0:0:1:200:F8FF:FE75:50DF%2-因此此IP地址在范围内2,即链接本地地址。

因此,如果您需要在Python中处理IPv6地址,现在可以这样处理:

from ipaddress import IPv6Addressaddr = IPv6Address('ff02::fa51%1')print(addr.scope_id)# "1" - interface-local IP address

但是,使用IPv6范围时应注意一件事。使用基本的Python运算符进行比较时,范围不同的两个地址不是相等的。

新的math模块

同时,在math模块中,添加或改进了许多其他功能。从对一个现有功能的改进开始:

import math# Greatest common divisormath.gcd(80, 64, 152)# 8

以前gcd计算最大公约数的函数只能应用于2个数字,程序员在处理更多数字时必须执行类似的操作,如math.gcd(80, math.gcd(64, 152))。从Python 3.9开始,可以将其应用于任意数量的值。

math模块的 第一个新增加的math.lcm功能,如下代码:

# Least common multiplemath.lcm(4, 8, 5)# 40余下的2个新函数紧密相关,那就是math.nextafter和math.ulp:# Next float after 4 going towards 5math.nextafter(4, 5)4.000000000000001# Next float after 9 going towards 0math.nextafter(9, 0)8.999999999999998# Unit in the Last Placemath.ulp(1000000000000000)0.125math.ulp(3.14159265)4.440892098500626e-16

math.nextafter(x, y)功能是非常简单-如果x是浮点数,则y也会同时考虑到浮点数精度。

新的字符串函数

字符串添加了两个新的便捷功能:

# Remove prefix"someText".removeprefix("some")# "Text"# Remove suffix"someText".removesuffix("Text")# "some"

当然你仍然可以使用string[len(prefix):]前缀和string[:-len(suffix)]后缀来实现该功能。但如果经常执行该操作,新的函数就该派上用场了。

小奖励

最后送大家一个Python 3.9甜点。实际上,它已经将HTTP状态码添加到了http.HTTPStatus上了。如下代码:

import httphttp.HTTPStatus.EARLY_HINTS# http.HTTPStatus.TOO_EARLY# http.HTTPStatus.IM_A_TEAPOT#

没事的时候可以来看看这些状态码,我觉得可能你也不知道啥时候能用上它们。也许在生产服务器返回像 http.HTTPStatus.IM_A_TEAPOT 的状态时,可能会提高程序员的生活质量。

小结

这里只是一部分Python 3.9的更新内容,也并非所有更新与你的日常编程有关,但一部分相信会帮助你提高效率。

Python 3.9目前还处于Alpha阶段,稳定版本大概在10月份正式推出,这段时间还会有一些更改。

python 3.9特性,开发者应该知道的Python 3.9新特性相关推荐

  1. 开发者需要知道的iOS 9 SDK新特性

    2019独角兽企业重金招聘Python工程师标准>>> 一.iPad多任务功能增强 1.全新的多任务界面 在iOS 9中,多任务界面从原来的横向单层排列进化成层叠排列,从而减少滚屏手 ...

  2. 开发者所需要知道的 iOS 9 SDK 新特性

    本文为InfoQ中文站特供稿件,首发地址.如需转载,请与InfoQ中文站联系. 年年岁岁花相似,岁岁年年人不同.今年的 WWDC 一如既往的热闹,但是因为要照顾家里刚出生的宝宝以及宝宝的娘,就只能在家 ...

  3. python列表去重效率,你应该知道的python列表去重方法

    前言 列表去重是写Python脚本时常遇问题,因为不管源数据来自哪里,当我们转换成列表的方式时,有可能预期的结果不是我们最终的结果,最常见的就是列表中元素有重复,这时候第一件事我们就要做去重处理. 我 ...

  4. 每一位Android开发者应该知道的Android体系架构和开发库

    Android的体系架构鼓励组件重用,允许开发者发布共享Activity.Service并且访问其他应用程序的数据,还可以根据开发者制定的安全限制进行管理.话虽如此,今天我将分享一些关于Android ...

  5. 开发者必看|Android 8.0 新特性及开发指南

    背景介绍 谷歌2017I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Androi ...

  6. 代号Pie!Android 9.0那些开发者必须知道的事

    北京时间2018年8月7日,Google官方发布了Android 9.0版本,代号为Pie.没有发布会,也没有其他仪式,尽管Google之前已经对Pie 做了不少预热工作(比如在中国国内四五月份就有一 ...

  7. 13 个Python开发者必知的Python GUI库

    Python Python是一种高级编程语言,它用于通用编程,由Guido van Rossum 在1991年首次发布.Python 的设计着重于代码的可读性. Python有非常大的标准库,并且有着 ...

  8. 你需要知道的 Python 3.10 和 Python 3.9 之间的差异

    介绍: 在过去的几十年里,Python 在编程或脚本语言领域为自己创造了一个名字.python 受到高度青睐的主要原因是其极端的用户友好性.Python 还用于处理复杂的程序或编码挑战.机器学习 (M ...

  9. python 代码换行_你一定不知道的Python小技巧,提升你Python代码的可读性

    Python的初学者,开发者都应该知道的代码可读性提高技巧,本篇主要介绍了如下内容: PEP 8是什么以及它存在的原因 为什么你应该编写符合PEP 8标准的代码 如何编写符合PEP 8的代码 为什么我 ...

最新文章

  1. 一文带你了解Spring核心接口Ordered的实现及应用
  2. Ajax的用法之JQuery
  3. LED调光,PFM即pulse frequence modulation
  4. Py之SnowNLP:SnowNLP中文处理包的简介、安装、使用方法、代码实现之详细攻略
  5. node 压缩图片_为了你安全压缩图片我操碎了心
  6. 北斗导航 | Select Satellite 选星算法
  7. Struts2 Hibernate集成示例教程
  8. Shell 条件表达式的正则匹配
  9. matlab数字图像处理大作业_线上教学优秀案例(16) | 数字图像处理基于蓝墨云+企业微信的线上教学经验分享...
  10. [题解]一本通1240:查找最接近的元素
  11. 计算机d盘无法格式化,电脑的D盘无法进行格式化怎么办?最强悍的三种解决方式看这里!...
  12. USBCNC输出板与VFD和主轴的使用
  13. 乐优商城(02)--商品分类
  14. python爬去新浪微博_Python爬取新浪微博热搜榜
  15. 丽丽的redhat终于可以上网了
  16. 2021安徽省安全员B证 多选题考试题库及答案
  17. 模糊图像处理系统的功能
  18. bit和byte以及千字节关系
  19. LeetCode844-比较含退格的字符串
  20. 如何用 LiquidText 高效阅读分析文献?

热门文章

  1. 长春高中计算机考试时间安排,长春部分高中期末考试时间出炉!
  2. c语言编常见算法,5个常见C语言算法
  3. python class tynu()_Visual Studio Express | Teraz Visual Studio Community
  4. 64位userdata.dll丢失_有什么一劳永逸解决私钥丢失的方法吗?
  5. TP5: 日志记录改造——4
  6. 【51单片机快速入门指南】5.3:SPI控制晶联讯JLX12864G_08602 LCD屏幕
  7. Linux C 数据结构—-循环链表
  8. microwindows位图解析
  9. oracle数据导入sqlldr小例子
  10. ie浏览器跨域报错问题;Access-Control-Allow-Headers 列表不存在请求表头 content-type;XMLHTTPRequest:网络错误 0x80070005,拒绝访问。