python3 2.00gb怎么去掉单位_最值得期待的Python 3.9的新功能

Python 3.9 beta预计下个月就要发布了,那么3.9有那些让我们期待的新功能和变更呢?本我我们一起来说Python 3.9的新功能的。

db872e1579ec80ecb28eb3519a256e7d.png

安装测试版

为了能够实际探索Python 3.9 的功能,我们需要先下载一个Python 3.9 alpha/beta并安装。

wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0a5.tgz

tar xzvf Python-3.9.0a5.tgz

cd Python-3.9.0a5

./configure --prefix=/home/chongchong/python-3.9

make

make install

这样python测试版本就会安装完成,我们通过

/home/chongchong//python-3.9/bin/python3.9

运行此命令后,会显示当前版本和提示消息:

259a6c74c9d220171ca8b2e7ed6d4b31.png

新区操作符

最值得期待的新功能是新字典合并运算符:|和|=。当前,我们要对字典合并要的做法,假设有两个字典:

d1 = {"x": 1, "y": 4, "z": 10}

d2 = {"a": 7, "b": 9, "x": 5}

我们希望结果为:

{'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}

# ^^^^^ Notice that "x" got overridden by value from second dictionary

方法1:

d = dict(d1, **d2)

方法2:

d = d1.copy()

d.update(d2)

方法3:

d = {**d1, **d2}

方法1使用dict(iterable, **kwargs)初始化字典的函数:第一个参数是普通字典,第二个参数是键/值对列表,在这种情况下,是使用**操作符解压缩的另一个字典。

方法2使用update功能用第二个字典中的键值对更新第一个字典。由于该操作会修改原始字典,因此我们需要将第一个字典复制到最终变量中,以避免修改原始字典。

方法3是最简练的解决方案,使用了字典解压缩并将两个变量(d1和d2)解压缩为结果变量d。

三种方法都可以用,在python 3.9中,我们还可以使用新的|操作法来解决。

新操作符方法:

4af59faa4ec9515b8a1cd142ad19520e.png

方法4:

d = d1 | d2

d = {'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}

方法5:

d1 |= d2

d1 = {'x': 5, 'y': 4, 'z': 10, 'a': 7, 'b': 9}

上面的方法4与方法1的拆包(d = {**d1, **d2})非常相似。方法5可用于就地合并,其中原始变量(d1)被第二操作数(d2)的值更新。

拓扑顺序

functools模块的TopologicalSorter可能是值得关注的另一项新功能。该类允许我们使用拓扑顺序对图进行排序。拓扑顺序是这样的顺序,其中对于2个节点u和v通过向边连接uv(从u至v)u在v前

在引入此功能之前,我们必须使用Khan的算法或深度优先搜索(不是完全简单的算法)手动来实现。在pyton 4.9中,如果需要对依赖作业进行排序以进行调度,则只需执行下面的操作:

263c0b91f1df21ab05dd141792c13ecc.png

from functools import TopologicalSorter

graph = {"A": {"D"}, "B": {"D"}, "C": {"E", "H"}, "D": {"F", "G", "H"}, "E": {"G"}}

ts = TopologicalSorter(graph)

list(ts.static_order())

结果:

['H', 'F', 'G', 'D', 'E', 'A', 'B', 'C']

5fcd8bf2df2bb0a1fd59c2f042a7a3fe.png

在上面的示例中,我们首先使用字典创建图,其中键是传出节点,值是它们的邻居集。之后,我们使用图形创建sorter的实例,然后调用static_order函数以产生排序。请记住,此顺序可能取决于插入顺序,因为当2个节点处于同一图形级别时,它们将按插入顺序返回。

除了静态的排序,此类还支持节点的并行处理,比如与任务队列工作。

IPv6范围的地址

Python 3.9中引入的另一个变化是可以指定IPv6地址的范围。对不不熟悉IPv6的人来说,通过IPv6范围,它可以用来验证IP的有效性。范围可以在IP地址的末尾使用%符号指定,例如"3FFE:0:0:1:200:F8FF:FE75:50DF%2"。该IP地址为范围内2,即链接本地地址。

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

from ipaddress import IPv6Address

addr = IPv6Address('ff02::fa51%1')

print(addr.scope_id)

结果为:

"1" – 表示网卡本地地址。

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

新math功能

ae1540177b40a4b8cf53f2b5cce7c6f1.png

Python 3.9在math模块中,添加或改进了许多其他功能。

import math

math.gcd(80, 64, 152)

8

以前计算最大公因数的函数(gcd)只能应用于2个数字,所以,我们不得不要变相使用math.gcd(80, math.gcd(64, 152))的方法来处理。从Python 3.9开始,gcd可以将其应用于任意数量的值。

math模块的新增加的功能是math.lcm:

math.lcm(4, 8, 5)

40

math.lcm用来计算其参数的最小公倍数。与gcd相同,它允许可变数量的参数。

还有两个新增加的功能是math.nextafter和math.ulp:

math.nextafter(4, 5)

4.000000000000001

math.nextafter(9, 0)

8.999999999999998

math.ulp(1000000000000000)

0.125

math.ulp(3.14159265)

4.440892098500626e-16

math.nextafter(x, y)功能是非常简单:它表示往后面浮动x到y同时增加浮点数精度的近似(补0或者9)。

而math.ulp用作数值计算精确的测量。最简短的解释是使用示例:

假设我们没有64位计算机。相反,我们只有3位数字。用这3位数字可以表示3.14而不是3.141。使用3.14,我们可以代表的最接近的较大数字是3.15,这2个数字相差1个ULP(最后一个单位),即0.1。因此,math.ulp返回值如上面示例。

新的字符串函数

Python 3.9中,字符串也添加了两个新的便捷功能:

removeprefix,去掉前缀

"someText".removeprefix("some")

结果为"Text"

removesuffix,去掉后缀

"someText".removesuffix("Text")

"some"

对这两个函数的功能可以使用string[len(prefix):]前缀和string[:-len(suffix)]后缀来实现的功能。但是这样的操作在日常很常见,所以增加这两个函数可以带来很多便捷。

HTTP代码

a901ffc18d206bd6c70cf6fc063962e0.png

还有一个需要提及的新功能是HTTP模块中已经增加了状态码http.HTTPStatus。即是:

import http

http.HTTPStatus.EARLY_HINTS

#

http.HTTPStatus.TOO_EARLY

#

http.HTTPStatus.IM_A_TEAPOT

#

http.HTTPStatus这些状态码会对我们处理http协议中的很多问题带来便捷。

结论

Python 3.9目前还处于Alpha阶段,下个月发布beta版本,到正式版发布已经为时不多了,希望该文章介绍能对我们版本升级更换有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TSQL语句中的Like用法

SQL Server:SQL Like 的特殊用法 %:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围 SymbolMeaninglike 5[%]5%like [_]n_nlike [a-cdf]a, b, c, d…

C++ virtual笔试

一直在赶场&#xff0c;下面是出了N次的题... 当基础看了 #include <iostream> using namespace std; namespace Torxie { // class CFirst { public: void func() { cout<< "CFirst"&l…

这6部超经典的物理电影,居然还有人没有看过?

全世界只有3.14 % 的人关注了爆炸吧知识开篇警告&#xff1a;这是一篇福利文&#xff01;今天小编给热爱物理及数学的小伙伴们&#xff0c;分享6部豆瓣评分8分以上&#xff0c;与数学和物理领域相关的经典电影&#xff0c;帮助大家在工作、学习之余劳逸结合。这些影片除了涉及数…

产品说,我只需要一个有亿点复杂的查询界面

有的时候&#xff0c;你需要动态构建一个比较复杂的查询条件&#xff0c;传入数据库中进行查询。而条件本身可能来自前端请求或者配置文件。那么这个时候&#xff0c;表达式树&#xff0c;就可以帮助到你。本文我们将通过几个简短的示例来了解如何完成这些操作。你也可能接到过…

PostgreSQL忘记输入where条件update更新整张表的解决办法

2019独角兽企业重金招聘Python工程师标准>>> 虽然出现这个错误很挫&#xff0c;但有时候还是会被你或者你的同事碰到。为了避免这个错误&#xff0c;PostgreSQL数据库中可以通过触发器来解决&#xff0c;这里用的是plpgsql 。 1、修改postgresql.conf配置 增加&…

视觉开发需要什么程度的数学_角度的概念在视觉上非常直观,但其数学定义并不是那么简单...

角的概念是几何学中最基本的概念之一。当我们研究三角形的性质时&#xff0c;我们自然地建立了三角形的边和角之间的联系。这些联系是在三角学中系统地建立起来的。角是什么&#xff1f;我们如何测量它&#xff1f;虽然角度的概念在视觉上很直观&#xff0c;但它的数学定义却不…

轻松搭建Google ADK开发环境

相信很多网友一直有自己DIY机器人的想法&#xff0c;但苦于要使用的各种控制模块品种繁多、成本高昂、且开发难度较高。但是随着Google发布了任何人均可自由开发Android终端外设的协议“Open Accessory Protocol”后&#xff0c;大家可以利用Android手机上的丰富资源以及完善的…

搭建nginx + python + django +memcached+ mysql +fastcgi 环境

Django是一个开放源代码的Web应用框 架,由Python写成,它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。pythondjango也是web开发者最受欢 迎的框架.今天记录下整个搭建开发环境的过程.(说明下环境的系统为 centos 5.2) 一:更新yum仓库(目前这个yu…

别薅了别薅了!!!再薅就真的被薅秃了!!

▲ 点击查看大家好&#xff0c;超模全新的固定栏目「薅羊毛」上线了&#xff01;既然是薅羊毛&#xff0c;怎么能空着手来&#xff1f;毕竟好用的好吃的&#xff0c;啥都要花钱。与其为那些虚幻的包装价值买单&#xff0c;不如跟着超模君狠狠地薅一把羊毛&#xff0c;「花小钱赚…

GitHub Universe 2021|MS Reactor 邀你共聚年度盛会

关注我们GitHub Universe 2021 将于2021年10月27-28日&#xff08;PDT&#xff09;在线直播&#xff0c;MS Reactor 将与 CSDN 合作进行转播&#xff0c;与你一同观看这场全球开发者盛会。 关于 GitHub UniverseGitHub Universe 是 GitHub 面向全球开发者社区举办的年度重要盛会…

C#中的多线程 - 并行编程 z

原文&#xff1a;http://www.albahari.com/threading/part5.aspx 专题&#xff1a;C#中的多线程 1并行编程Permalink 在这一部分&#xff0c;我们讨论 Framework 4.0 加入的多线程 API&#xff0c;它们可以充分利用多核处理器。 并行 LINQ&#xff08;Parallel LINQ&#xff09…

java数组深拷贝和浅拷贝_java中的深拷贝与浅拷贝(值类型 vs 引用类型)

对象赋值赋值是日常编程过程中最常见的操作&#xff0c;最简单的比如&#xff1a;Student codeSheep new Student(); Student codePig codeSheep;严格来说&#xff0c;这种不能算是对象拷贝&#xff0c;因为拷贝的仅仅只是引用关系&#xff0c;并没有生成新的实际对象&#x…

C++遍历树-非递归递归-使用了标记位

//这不是最有效的方法&#xff0c;但使用了标记为容易理解&#xff0c;记下 /* * description:树的遍历示例&#xff0c;非递归版本 * 入栈顺序&#xff1a; * 前序&#xff1a; 右子树 - 左子树 - 当前节点 * 中序&#xff1…

模板打印函数

vector的元素可以是任意类型T&#xff0c;但必须具备赋值和拷贝能力&#xff08;具有public 拷贝构造函数和重载的赋值操作符). 其实很容易理解&#xff0c;自定义一些模板时&#xff0c;同样会需要其实例化类型具备默写操作&#xff08;如大于小于操作等。&#xff09; 下面一…

各大厂抢招WPF,小米这回是下了血本啊...

九银十进入尾声&#xff0c;小米又爆出高薪岗位&#xff1a;35k左右&#xff0c;14薪&#xff0c;招5年左右.NET&#xff0c;要求WPF和自动化( 职位&#xff1a;https://app.mokahr.com/apply/xiaomi/287/#/job/523278c0-c504-4cdc-bb88-28c1b101ac76)。今年招WPF的大厂太多了&…

你永远都不知道你老公可以多幼稚......

1 爸爸带女儿&#xff01;两个幼稚鬼▼2 常州一小区提醒防疫四种语言切换无压力▼3 我知道了&#xff01;他的门牙肯定有条缝▼4 狗子OS&#xff1a;今天栏杆和木棍必须要断一个▼5 掀起你的假发来让我帮你擦擦汗▼6 干啥啥不行&#xff0c;吃饭第一名▼7 一看就是亲妈&…

mysql数据库属性_mysql - 数据库操作和数据属性

数据库操作启动 mysql, mac 可通过 brew 安装 mysql 后启动。 window 需要手动配置1234567891011121314mysql.server start// windownet start mysql// 登录 -u 用户名 root 超级用户 -p 密码mysql -uroot -p// 退出mysql > q// 切换到 learn 数据库mysql > use learnMyS…

jQuery中,选择器既匹配开头又匹配结尾

jQuery中&#xff0c;选择器既匹配开头又匹配结尾的方法&#xff1a; 1 [attr^val]attr$val 2 [attr^val][attr$val] 转载于:https://www.cnblogs.com/taotaodetuer/p/4790915.html

linux下解压命令大全

.tar 解包&#xff1a;tar xvf FileName.tar打包&#xff1a;tar cvf FileName.tar DirName&#xff08;注&#xff1a;tar是打包&#xff0c;不是压缩&#xff01;&#xff09;———————————————.gz解压1&#xff1a;gunzip FileName.gz解压2&#xff1a;gzip -d…

正则基础之——神奇的转义

1 概述 这或许会是一个让人迷惑&#xff0c;甚至感到混乱的话题&#xff0c;但也正因为如此&#xff0c;才有了讨论的必要。 在正则中&#xff0c;一些具有特殊意义的字符&#xff0c;或是字符序列&#xff0c;被称作元字符&#xff0c;如“?”表示被修饰的子表达式匹配…