Python 3.9 你所需要知道的都在这里

从按键开机到I2C隔离:手把手拆解一个智能硬件项目里的MOS管实战配置 本文详细解析了智能硬件项目中MOS管的实战配置,从按键开机电路到I2C总线隔离,全面覆盖电源管理和信号隔离的关键技术。通过PMOS+NMOS组合方案实现可靠的开机功能,并采用双NMOS方案优化I2C通信隔离,提升系统稳定性和信号质量。 阅读详情

AI派在读学生小姐姐Beyonce

Java实战项目练习群

长按识别下方二维码,按需求添加

扫码添加Beyonce小姐姐

扫码关注

进Java学习大礼包


1.字典合并与更新运算符

在Python3.9以前,你可能需要这样合并字典:

d1 = {'name': 'revotu', 'age': 99}
d2 = {'age': 24, 'sex': 'male'}

# 方法1,使用两次update方法向字典中添加元素
d = {}
d.update(d1) 
d.update(d2)
print(d)

# 方法2,先复制,后更新,缺点是增加了一个临时变量
d = d1.copy() 
d.update(d2)
print(d)

# 方法3,字典构造器
d = dict(d1) 
d.update(d2)
print(d)

# 方法4,关键字参数hack
# 只有一行代码,看上去很酷,缺点是这种hack技巧只有在字典的键是字符串时才有效。
d = dict(d1, **d2)
print(d)

# 方法5,字典拆分,在Python3.5+中,可以使用一种全新的字典合并方式,这行代码很pythonic
d = {**d1, **d2}
print(d)

现在,Python 3.9之后,合并 ( | ) 与更新 ( |= ) 运算符已被加入内置的 dict 类。它们为现有的 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.新增用于移除前缀和后缀的字符串方法

增加了  和  用于方便地从字符串移除不需要的前缀或后缀。也增加了 bytes, bytearray  以及 collections.UserString 的对应方法。

内置的str类将获得两个新方法,它们的源代码如下:

def removeprefix(self: str, prefix: str, /) -> str:
    if self.startswith(prefix):
        return self[len(prefix):]
    else:
        return self[:]

def removesuffix(self: str, suffix: str, /) -> str:
    # suffix='' should not call self[:-0].
    if suffix and self.endswith(suffix):
        return self[:-len(suffix)]
    else:
        return self[:]

它的使用方法如下:

>> "HelloWorld".removesuffix("World")
'Hello'
>> "HelloWorld".removeprefix("Hello")
'World'

3.类型标注支持更多通用类型

在类型标注中现在你可以使用内置多项集类型例如 list 和 dict 作为通用类型而不必从 typing 导入对应的大写形式类型名 (例如 List 和 Dict)。

比如:

def greet_all(names: list[str]) -> None:
    for name in names:
        print("Hello", name)

4.标准库新增 zoneinfo 模块

zoneinfo 模块为标准库引入了 IANA 时区数据库。它添加了 zoneinfo.ZoneInfo,这是一个基于系统时区数据的实体 datetime.tzinfo 实现。

>>> from zoneinfo import ZoneInfo
>>> from datetime import datetime, timedelta

>>> # 夏时制 - 07:00
>>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))
>>> print(dt)
2020-10-31 12:00:00-07:00
>>> dt.tzname()
'PDT'

>>> # 加7天,夏时制结束 - 08:00
>>> dt += timedelta(days=7)
>>> print(dt)
2020-11-07 12:00:00-08:00
>>> print(dt.tzname())
PST

5.标准库新增 graphlib 模块

支持针对图的操作,比如获取拓扑排序:

>>> from graphlib import TopologicalSorter
>>> graph = {"D": {"B", "C"}, "C": {"A"}, "B": {"A"}}
>>> ts = TopologicalSorter(graph)
>>> tuple(ts.static_order())
('A', 'C', 'B', 'D')

关于graphlib模块更多信息可见:
https://docs.python.org/zh-cn/3/library/graphlib.html#module-graphlib

6.Math模块迎来调整

以前gcd计算最大公因数的函数只能应用于2个数字,这就很蛋疼,我们必须使用 math.gcd(80, math.gcd(64, 152))来处理大于2个数字的情况。而现在 gcd 允许计算任意数量的数字:

import math

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

并新增了一个函数,计算最小公倍数:

# 最小公倍数
math.lcm(4, 8, 5)
# 40


用法与gcd一样,它允许可变数量的参数。

7.os模块

以前Windows系统下是无法使用 os.unsetenv 的,这个问题在Python3.9已被修复。现在Windows系统也支持 os.unsetenv 了:

def __init__(self, *args, **kw):
    if hasattr(os, 'unsetenv'):
        os.unsetenv('_MEIPASS2')
    else:
        os.putenv('_MEIPASS2', '')

8.random模块: 新增随机字节串

现在你可以使用random下的randbytes函数随机生成字节:

>> from random import randbytes
>> randbytes(4)
b'\xf3\xf5\xf8\x98'

9.性能优化

重点优化:

1.多个 Python 内置类型 (range, tuple, set, frozenset, list, dict) 现在通过使用 PEP 590 向量调用协议得到加速。

2.优化了在推导式中为临时变量赋值的惯用方式。现在推导式中的 for y in [expr] 会与简单赋值语句 y = expr 一样快速。例如:

sums = [s for s in [0] for x in data for s in [s + x]]


不同于 := 运算符,这个惯用方式不会使变量泄露到外部作用域中。

3.优化了多线程应用的信号处理。如果一个线程不是获得信号的主线程,字节码求值循环不会在每条字节码指令上被打断以检查无法被处理的挂起信号。只有主解释器的主线程能够处理信号。

以下是对从 Python 3.4 到 Python 3.9 的性能提升情况的总结:

Python version                       3.4     3.5     3.6     3.7     3.8    3.9
--------------                       ---     ---     ---     ---     ---    ---

Variable and attribute read access:
    read_local                       7.1     7.1     5.4     5.1     3.9    3.9
    read_nonlocal                    7.1     8.1     5.8     5.4     4.4    4.5
    read_global                     15.5    19.0    14.3    13.6     7.6    7.8
    read_builtin                    21.1    21.6    18.5    19.0     7.5    7.8
    read_classvar_from_class        25.6    26.5    20.7    19.5    18.4   17.9
    read_classvar_from_instance     22.8    23.5    18.8    17.1    16.4   16.9
    read_instancevar                32.4    33.1    28.0    26.3    25.4   25.3
    read_instancevar_slots          27.8    31.3    20.8    20.8    20.2   20.5
    read_namedtuple                 73.8    57.5    45.0    46.8    18.4   18.7
    read_boundmethod                37.6    37.9    29.6    26.9    27.7   41.1

Variable and attribute write access:
    write_local                      8.7     9.3     5.5     5.3     4.3    4.3
    write_nonlocal                  10.5    11.1     5.6     5.5     4.7    4.8
    write_global                    19.7    21.2    18.0    18.0    15.8   16.7
    write_classvar                  92.9    96.0   104.6   102.1    39.2   39.8
    write_instancevar               44.6    45.8    40.0    38.9    35.5   37.4
    write_instancevar_slots         35.6    36.1    27.3    26.6    25.7   25.8

Data structure read access:
    read_list                       24.2    24.5    20.8    20.8    19.0   19.5
    read_deque                      24.7    25.5    20.2    20.6    19.8   20.2
    read_dict                       24.3    25.7    22.3    23.0    21.0   22.4
    read_strdict                    22.6    24.3    19.5    21.2    18.9   21.5

Data structure write access:
    write_list                      27.1    28.5    22.5    21.6    20.0   20.0
    write_deque                     28.7    30.1    22.7    21.8    23.5   21.7
    write_dict                      31.4    33.3    29.3    29.2    24.7   25.4
    write_strdict                   28.4    29.9    27.5    25.2    23.1   24.5

Stack (or queue) operations:
    list_append_pop                 93.4   112.7    75.4    74.2    50.8   50.6
    deque_append_pop                43.5    57.0    49.4    49.2    42.5   44.2
    deque_append_popleft            43.7    57.3    49.7    49.7    42.8   46.4

Timing loop:
    loop_overhead                    0.5     0.6     0.4     0.3     0.3    0.3

可以看到,Python 3.9 相比于 Python 3.6 提升还是非常明显的,比如在列表的append 和 pop 操作上,性能提升了30%、在全局变量的读取上,性能提高了45%。

如果你的项目比较小型,升级到Python3.9的成本问题和依赖问题不多,还是非常推荐升级的。

10.未来可期

这一个更改你可能看不见、摸不着,但它可能改变Python的未来。

以前Python使用 LL(1) 解析器,从Python 3.9 开始,将使用 PEG 解析器,官方认为,PEG 在设计新语言特性时的形式化比 LL(1) 更灵活。

因此,请期待Python 3.10,Python团队或许能给我们带来更多的惊喜!

我们的文章到此就结束啦,如果你喜欢今天的Python 教程,请持续关注AI派。

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐

一定要备注【高清图】哦

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

Python 爬虫实战:爬取微博热搜与用户评论数据 本文系统讲解微博热搜榜单与用户评论数据的爬取技术方案。针对微博热搜榜采用Requests+BeautifulSoup解析静态HTML结构,实现高效爬取;对于动态加载的评论数据,使用Selenium模拟浏览器行为规避反爬机制。详细阐述技术选型、反爬策略、数据清洗及存储方法,提供完整代码实现和输出示例。同时强调合规要求,提示开发者需在遵守平台规则的前提下进行数据采集。该方案为舆情分析和热点研究提供了可落地的技术实现路径。 阅读详情

相关推荐

3GPP协议解读_物理层系列(一)_物理层协议怎么看?

5G NR相关协议一般都在38系列,点进去以后可以看到,38.2xx系列为物理层相关协议,为了掌握物理层相关知识,应该怎么看协议呢?我建议从38.201读起,对38.2xx系列协议有一个整体的把握。

JCMLSY的博客 1330

python中value的含义_python中value的意思

python语句s = str(value)是什么意思呢把value转成字符串,然后赋值给变量s 比如说,s=str(100)以后。Python 比如有一串数据的话里面 value[:-1]是什么value[:-1] : value 应该是一个列表/元组, value[:-1]表示其最后一个元素python 如何将字典中的value值CSS布局HTML小编今天和大家分享和如图一数据,如何将字典中的...

weixin_31842775的博客 2万+

IPC-7351标准实战:如何用LPWizard_10快速生成PCB封装库(附避坑指南)

本文提供了一份详细的IPC-7351标准实战指南,手把手教你使用LPWizard_10软件快速生成符合行业标准的PCB封装库,并直接导入Cadence Allegro。文章深入解读了IPC-7351密度等级的选择逻辑,并重点分享了软件配置、QFN封装生成实战步骤,以及导出失败、焊盘异常等常见问题的避坑解决方案,旨在帮助硬件工程师提升设计效率和可靠性。

weixin_29207439的博客 157

python 函数基础

什么是函数? 函数在Python中是最基本的程序结构,用来最大化地让我们的代码进行复用。简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行。Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用。有了函数,可以在很大程度上减少复制及粘贴代码的次数了。可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可。...

weixin_30454481的博客 523

微信H5网页支付JSAPI部分用户报错:system:access_denied 的解决方案

JSAPI 支付仅支持微信内置浏览器调用。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1687

高斯过程的数学理解

G澳大利亚的过程是有益的,特别是当我们有少量数据时。当我在制造业担任数据科学家时,我们的团队使用这种算法来揭示我们接下来应该进行哪些实验条件。但是,此算法不如其他算法流行。在这篇博客中,我将通过可视化和 Python 实现来解释高斯过程 [1] 的数学背景。

gongdiwudu的专栏 3611

Python 字典中的values函数

目录 values的功能 values的用法 values功能 获取当前字典中所有键值对中的值( value ) values的用法 用法: dict.values() ->无需传参,返回一个value集合的伪列表 In [15]: my_dict = {'name': 'insane', 'age' : 33} In [16]: my_dict.values() out[16]: dict_values ([ 'insane', 33]) ## 不具备列表的所有功能 实战 #

Insane_Loafer的博客 1万+

2026 拉勾网:JA4+指纹绕过 + sign逆向 + 动态城市参数,月采集10万+数据实战

2026年拉勾网反爬技术全面升级,采用JA4+ TLS指纹识别、动态sign签名等多维度防护体系。本文提供工业级爬虫解决方案,通过curl_cffi模拟浏览器指纹、逆向sign加密算法、动态生成城市参数三大核心技术,实现高效稳定的数据采集。系统采用分层架构设计,包含任务调度、签名生成、多线程引擎等模块,单月可获取10万+条招聘数据。重点解析了JA4+指纹识别原理、传统方法的局限性,以及通过HMAC-SHA256算法逆向sign参数的完整过程。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2395

_MEIPASS2

EasyPythonDecompiler.exe 或 uncompyle6.exe 提取pyc文件的源代码py文件。python pyinstxtractor.py xxx.exe(exe文件)提取pyc文件。_MEIPASS2 是python打包成exe的特征码,可以用。

amber_o0k的博客 275

vue2/3 - [超详细] 实现企业微信扫码登录完整流程及代码,vue项目接入企业微信扫码登录功能教程,支持新跳页显示二维码或div容器里内嵌登录二维码(详细代码注释,一键复制开箱即用)

vue企业微信扫码登录,vue网页网站企业微信扫码登录教程,vue如何实现企业微信扫码登录功能,vue详细企业微信扫码登录功能实现,vue2实现企业微信扫码登录,前端vue企业微信扫码登录教程,vue pc电脑端企业微信扫码登录详细教程,vue项目中怎么做企业微信扫码注册登录,vue实现网站接入企业微信扫码登录,vue2做企业微信扫码登录的优质文章教程,vue网站对接企业微信扫码登录,vue企业微信扫码登录如何新开一页全屏显示登录二维码,vue企业微信登录二维码 内嵌在div容器里/跳页显示登录二维码,vu

✅ 精选推荐文章 5703

适航规章、标准,书籍资料下载汇总(更新中)

以下是一些收集到的适航相关的资料,分享给大家。(如果没有你想要的资料,请留言,等找到会及时更新!

qq_41854911的博客 2562

关于 Python 3.9,那些你不知道的事

作者 |AyushiRawat编译 | 高卫华题图 |视觉中国Python一直在满足社区需求,并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放,性能的提...

优快云资讯 8519

《QGIS快速入门与应用基础》293:色带调整与透明设置

详细讲解了QGIS中遥感影像色带调整与透明设置的核心技术,帮助用户将遥感成果从基础合成提升到专业出图标准。主要内容包括: 色带精细化调整: 多波段真/假彩色合成的优化技巧(Gamma校正、色彩平衡、色阶端点校准) 单波段栅格数据的伪彩色规范设置(行业标准色带选择与分类方法) 透明设置: 研究区黑边/白边的消除方法 多图层叠加时的透明融合技巧 特定地物的差异化半透明显示 实用建议: 提供行业标准参数模板和效果对比图 标注新手操作红线和常见问题排查 强调符合遥感行业规范的可视化要求。

LuckyHanMo的博客 362

关于Python 3.9,那些你不知道的事

作者 |AyushiRawat编译 | 高卫华题图 |视觉中国Python一直在满足社区需求,并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放,性能的提...

AI科技大本营 3137

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

在过去的几十年里,Python 在编程或脚本语言领域为自己创造了一个名字。python 受到高度青睐的主要原因是其极端的用户友好性。Python 还用于处理复杂的程序或编码挑战。机器学习 (ML)、人工智能 (AI) 和数据科学等新兴领域也满足了学习这种语言的高需求。与 Java、C# 和其他语言等传统语言相比,Python 是一种强大的编程语言,迅速成为开发人员、数据科学家和 AI/ML 爱好者的最爱。Python 作为一种编程语言,有许多用例吸引了 IT 行业的学习者和专家。

weixin_73136678的博客 3280

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python中value什么意思_Python 3.9 你所需要知道的都在这里

原标题:Python 3.9 你所需要知道的都在这里 1.字典合并与更新运算符在Python3.9以前,你可能需要这样合并字典:d1 = { 'name': 'revotu', 'age': 99}d2 = { 'age': 24, 'sex': 'male'}# 方 法1,使用两次update方法向字典中添加元素d = {}d. update(d1)d. update(d2)print(d)# ...

weixin_33835368的博客 3383

你知道Python 3.10 和 Python 3.9 之间的差异吗?

一,介绍 在过去的几十年里,Python 在编程或脚本语言领域为自己创造了一个名字。python 受到高度青睐的主要原因是其极端的用户友好性。 Python 还用于处理复杂的程序或编码挑战。机器学习 (ML)、人工智能 (AI) 和数据科学等新兴领域也满足了学习这种语言的高需求。与 Java、C# 和其他语言等传统语言相比,Python 是一种强大的编程语言,迅速成为开发人员、数据科学家和 AI/ML 爱好者的最爱。 Python 作为一种编程语言,有许多用例...

a379749的博客 3743

python3.9性能提升多少_关于 Python 3.9,那些你不知道的事

作者 | Ayushi Rawat编译 | 高卫华题图 | 视觉中国Python一直在满足社区需求,并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放,性能的提升,简便的新字符串函数,字典并集运算符以及更兼容稳定的内部API。文章将涉及:字典并集和可迭代更新字符串方法类型提示新的数学函数新的解析器IPv6范围内的地址新模块:区域信息其他语言更改字典并集和可迭代更新字典并集...

weixin_39971138的博客 892

python3.9安装教程_Python 3.9 之你应该知道的新功能

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。距离 Python 3.9 版本发布还有一段时间(2020.05.10),但是最新的 alpha 版本(3.9.0a5)已经发布了,而且 beta 版本也快了。现在也是时候来看看有什么我们所期待的新功能,以及改进点和修复项了。这篇文章不会罗列出所有的改动项,而是列了一些对于我们开发着来说有趣的且值得关注的东...

weixin_39763033的博客 282

python 3.9 性能_关于 Python 3.9,那些你不知道的事

Python一直在满足社区需求,并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放,性能的提升,简便的新字符串函数,字典并集运算符以及更兼容稳定的内部API。文章将涉及:字典并集和可迭代更新字符串方法类型提示新的数学函数新的解析器IPv6范围内的地址新模块:区域信息其他语言更改字典并集和可迭代更新字典并集我最喜欢的新特性之一是流畅的语法。Python 3.9 dict类。...

weixin_42350506的博客 320

python3.9.0 print_关于 Python 3.9,那些你不知道的事

原标题:关于 Python 3.9,那些你不知道的事 作者 | Ayushi Rawat编译 | 高卫华题图 | 视觉中国Python一直在满足社区需求,并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放,性能的提升,简便的新字符串函数,字典并集运算符以及更兼容稳定的内部API。文章将涉及:字典并集和可迭代更新字符串方法类型提示新的数学函数新的解析器IPv6范围内的地址新...

weixin_32822089的博客 198
上一篇: 送2020最新款笔记本,吃鸡贼爽!!
下一篇: 巧用 selenium 解决验证码,模拟登陆某流行网站
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值