Python 3.8.0 正式版发布,新特性初体验

树莓派将python版本更新至python3.8.0 在做一个项目的实验,系统提示树莓派必须安装python3.8.0以上的版本才能进行。但是我的树莓派系统自带的python版本很低。查了一些资料才发现知道树莓派系统默认安装的Python版本取决于其发布时Python的稳定版本。由于Raspberry Pi OS的发布周期和Python的版本更新并不完全同步,因此树莓派上预装的Python版本可能并不是最新的。 阅读详情

北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性。

赋值表达式

PEP 572: Assignment Expressions

新增一种新语法形式::=,又称为“海象运算符”(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言,应该对这个语法非常熟悉。

具体作用我们直接用实例来展示,比如在使用正则匹配时,以往版本中我们会如下写:

import re	

	
pattern = re.compile('a')	
data = 'abc'	
match = pattern.search(data)	
if match is not None:	
    print(match.group(0))

而使用赋值表达式时,我们可以改写为:

if (match := pattern.search(data)) is not None:	
    print(match.group(0))

在 if 语句中同时完成了求值、赋值变量、变量判断三步操作,再次简化了代码。

下面是在列表表达式中的用法:

filtered_data = [y for x in data if (y := func(x)) is not None]

强制位置参数

PEP 570: Python Positional-Only parameters

新增一个函数形参标记:/,用来表示标记左侧的参数,都只接受位置参数,不能使用关键字参数形式。

>>> def pow(x, y, z=None, /):	
...     r = x ** y	
...     return r if z is None else r%z	
...	
>>> pow(5, 3)	
125	
>>> pow(x=5, y=3)	
Traceback (most recent call last):	
  File "<stdin>", line 1, in <module>	
TypeError: pow() takes no keyword arguments

这实际上是用纯 Python 代码来模拟现有 C 代码实现的内置函数中类似功能,比如内置函数 len('string') 传参是不能使用关键字参数的。

Runtime 审计钩子

PEP 578: Python Runtime Audit Hooks

这让我们可以对某些事件和 API 添加一些钩子,用于在运行时监听事件相关的参数。

比如这里监听 urllib 请求:

>>> import sys	
>>> import urllib.request	
>>> def audit_hook(event, args):	
...     if event in ['urllib.Request']:	
...         print(f'{event=} {args=}')	
...	
>>> sys.addaudithook(audit_hook)	
>>> urllib.request.urlopen('https://httpbin.org/get?a=1')	
event = 'urllib.Request' args =( 'https://httpbin.org/get?a=1' , None , {}, 'GET' )	
<http.client.HTTPResponse object at 0x108f09b38>

官方内置了一些 API,具体可查看 PEP-578 规范文档[1],也可以自定义。

f-strings 支持等号

在 Python 3.6 版本中增加了 f-strings,可以使用 f 前缀更方便地格式化字符串,同时还能进行计算,比如:

>>> x = 10	
>>> print(f'{x+1}')	
11

在 3.8 中只需要增加一个 = 符号,即可拼接运算表达式与结果:

>>> x = 10	
>>> print(f'{x+1=}')	
'x+1=11'

这个特性官方指明了适用于 Debug。

Asyncio 异步交互模式

在之前版本的 Python 交互模式中(REPL),涉及到 Asyncio 异步函数,通常需要使用 asyncio.run(func()) 才能执行。

而在 3.8 版本中,当使用 python -m asyncio 进入交互模式,则不再需要 asyncio.run。

>>> import asyncio	
>>> async def test():	
...     await asyncio.sleep(1)	
...     return 'test'	
...	
>>> await test()	
'test'

跨进程共享内存

在 Python 多进程中,不同进程之间的通信是常见的问题,通常的方式是使用 multiprocessing.Queue 或者 multiprocessing.Pipe,在 3.8 版本中加入了 multiprocessing.shared_memory,利用专用于共享 Python 基础对象的内存区域,为进程通信提供一个新的选择。

from multiprocessing import Process	
from multiprocessing import shared_memory	

	
share_nums = shared_memory.ShareableList(range(5))	

	
def work1(nums):	
    for i in range(5):	
        nums[i] += 10	
    print('work1 nums = %s'% nums)	

	
def work2(nums):	
    print('work2 nums = %s'% nums)	

	
if __name__ == '__main__':	
    p1 = Process(target=work1, args=(share_nums, ))	
    p1.start()	
    p1.join()	
    p2 = Process(target=work2, args=(share_nums, ))	
    p2.start()	

	
# 输出结果:	
# work1 nums = [10, 11, 12, 13, 14]	
# work2 nums = [10, 11, 12, 13, 14]

以上代码中 work1 与 work2 虽然运行在两个进程中,但都可以访问和修改同一个 ShareableList 对象。

@cached_property

熟悉 Python Web 开发的同学,对 werkzeug.utils.cached_property 与 django.utils.functional.cached_property 这两个装饰器一定非常熟悉,它们是内置 @property 装饰器的加强版,被装饰的实例方法不仅变成了属性调用,还会自动缓存方法的返回值。

现在官方终于加入了自己的实现:

>>> import time	
>>> from functools import cached_property	
>>> class Example:	
...     @cached_property	
...     def result(self):	
...         time.sleep(1) 	
...         print('work 1 sec...')	
...         return 10	
...	
>>> e = Example()	
>>> e.result	
work 1 sec...	
10	
>>> e.result # 第二次调用直接使用缓存,不会耗时	
10

其他改进

•PEP 587: Python 初始化配置•PEP 590: Vectorcall,用于 CPython 的快速调用协议•finally: 中现在允许使用 continue•typed_ast 被合并回 CPython•pickle 现在默认使用协议4,提高了性能•LOAD_GLOBAL 速度加快了 40%•unittest 加入了异步支持•在 Windows 上,默认 asyncio 事件循环现在是 ProactorEventLoop•在 macOS 上,multiprocessing 启动方法默认使用 spawn

更多特性可查看 What’s New In Python 3.8[2]

近期热门:

千人学习群:

Python宣布:正式发布 Python 3.8.0 Python 官网静悄悄地发布了一则大消息:正式发布 Python 3.8.0!新版本较3.7版增加了一大波新功能和优化,来与 AI 大咖一起参与讨论吧~ 近期,Python 官网宣布,正式发布 Python 3.8.0! Python 3.8.0 现已推出。 代表 Python 开发社区和 Python 3.8 发布团队,我们很高兴地宣布 Python 3.8.0 现在已经可以使用。 Pyth... 阅读详情

相关推荐

Python3.10正式版发布,新特性速览

在正值国庆假期人山人海的2021年10月4号,Python官方正式发布了Python3.10.0。作为一只假期期间宅着不动的coding人,自然是第一时间体验了一波。相较于之前的版本,该版本有以下主要变更。 ps: 想看更好看的排版?访问:funnysaltyfish.github.io/2021/10/05/… 新的 Union Type表达 新版本简化了 Union Type 的使用 ,改为更为简洁的| 旧版: from typing import Union a: Union[int, str]

m0_59236127的博客 2571

python 语言编程怎么实现 ASCII 和字符互转?

python 语言编程怎么实现 ASCII 和字符互转?

隔壁王叔的博客 7768

Python 3.8.0_64位正式版:新特性与功能

Python作为广受欢迎的高级编程语言,其每一步的发展都牵动着广大开发者的心。本章节将对Python 3.8.0_64位版本进行详细介绍,从其版本发布的重要性,到对现代开发环境的适应性,以及对未来软件开发趋势的影响。Python 3.8.0_64位版本是Python语言的重要里程碑。它不仅继承了以往版本的稳定性和易用性,还在性能和功能上做了显著的提升。64位系统对内存的处理能力较32位有显著增强,使得Python在此架构上运行更为高效。

weixin_35829279的博客 874

Python系统的下载与安装教程

要使用 Python 语言进行程序开发,必须安装其开 发环境,即Python 解释器。

DEVELOPERAA的博客 1417

HomeAssistant+HACS实战:5分钟搞定米家设备接入(附HomeKit配置技巧)

本文详细介绍了如何通过HomeAssistant和HACS插件商店快速接入米家设备,并分享HomeKit配置技巧。从HACS安装到米家设备接入,再到HomeKit设备集成,提供一站式智能家居解决方案,帮助用户实现设备统一管理和自动化场景设置。

weixin_29192141的博客 1049

电商订单系统设计简析(一)

电商所有模块中,订单系统作为最为核心的模块,决定了整个流程能不能顺畅的执行,起着承上启下的作用。相信很多PM都不陌生,到了一家电商公司,总会觉得公司现有的流程有不少问题,因为问题来自四面八方,一下子摸不着到底是哪里出了问题,PM就跟补丁师傅一样,遇到一个补一个。其实很多日常开发和测试提得需求都是表面需求,而这些表面上呈现出的各种问题,都是源自于流程上的不完整或者流程上某个环节上的缺失导致的。订单系...

野蛮非先生的博客 9553

Python基础3.8.0版本环境安装

点击python-3.8.0-amd64,出现弹窗,第一个常规安装,也叫自动安装,第二个自定义安装,我们选择第二个,选择前需要查看最下面2个勾。链接:https://pan.baidu.com/s/1YMIw6cyIZopK3xjV9UKCOw。同样配置界面,配置项不用管,默认即可,选择安装路径,点击Install(安装)安装完成,新版本有这么一个配置,也默认安装上,继续点击Disable。配置项界面,安装哪些项,默认全部安装,点击Next(下一步)点击Close,关闭窗口,安装完成。

咸鱼干 826

python + QXDM5高通平台通过自动化截取log方法及代码

python + QXDM5高通平台通过自动化截取log方法及代码

dgzj2001的博客 1819

python3.8什么时候出来_Python 3.8.0 正式版发布,新特性初体验

北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性。赋值表达式PEP 572: Assignment Expressions新增一种新语法形式::=,又称为“海象运算符”(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言,应该对这个语法非常熟悉。具体作用我们直接用实例来展示,比如在使用正则匹配时,以往版...

weixin_39690401的博客 1538

Linux ELF文件解析:从file到readelf的完整工具链指南

ELF(可执行与可链接格式)是Linux系统中二进制文件的标准格式,定义了程序加载、内存布局和元数据组织方式。其核心原理在于通过程序头表描述执行视图、节区头表描述链接视图,实现代码与数据的结构化存储。这一格式的技术价值在于为程序调试、安全审计和性能优化提供了底层支持,尤其在动态链接、符号解析和内存保护机制中发挥关键作用。在应用场景上,系统管理员依赖ELF分析工具解决库依赖问题,安全研究员通过检查安全属性评估漏洞风险,开发者则利用反汇编进行代码调试。本文聚焦于file、readelf、objdump等工具链的

weixin_42691065的博客 635

python3.8.0怎么用_Python 3.8.0 正式版发布,新特性初体验

北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性。赋值表达式PEP 572: Assignment Expressions新增一种新语法形式::=,又称为“海象运算符”(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言,应该对这个语法非常熟悉。具体作用我们直接用实例来展示,比如在使用正则匹配时,以往版...

weixin_39696197的博客 471

在innovus中通过ecoAddRepeater插入buffer/inverter

在innovus中,我们可以通过ecoAddRepeater命令来在net上添加单个buffer或者成对的inverters。ecoAddRepeater命令的行为由命令setEcoMode控制。 选项说明 -cell <list of cells> 指定插入的buffer或者inverter的类型。 -net <netName> | -term <inst1/term1 inst2/term2 ...> -net指定需要插入buffer/inverters的

kevindas的博客 1万+

python3.8.5 run-Python 3.8.0 正式版发布,新特性初体验

北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性。赋值表达式PEP 572: Assignment Expressions新增一种新语法形式::=,又称为“海象运算符”(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言,应该对这个语法非常熟悉。具体作用我们直接用实例来展示,比如在使用正则匹配时,以往版...

weixin_37988176的博客 282

记一次Redis出问题及解决方案

Q1: redis服务关闭前确认数据还是在的,重启后发现一条数据都没了,key* 查也是空的 A1: 经仔细检查发现redis.conf配置文件配置的数据存储目录配置的是dir ./ 也就是相对目录,也就是说在哪个目录执行redis-server redis.config启动命令 redis数据就会存到哪个目录,同样就会加载哪个目录下的数据文件(dump.rdb),前后两次启动命令的位置不一样导致第二次启动没有加载到(dump.rdb)文件,从而导致查不出数据 Q2:springboot 集成r

u010013928的博客 3059

ruoyi-vue-pro集成magic-api(图文代码)

原先写过简单的集成:了解 magic-api的基本用法 附实战代码 magic-api相关文档推荐阅读:接口鉴权 相关的Java代码推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 【Java项目】实战CRUD的功能整理(持续更新)

码农研究僧的博客 7万+

发布传参_Python 3.8.0 正式版发布,新特性初体验

北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性。赋值表达式PEP 572: Assignment Expressions新增一种新语法形式::=,又称为“海象运算符”(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言,应该对这个语法非常熟悉。具体作用我们直接用实例来展示,比如在使用正则匹配时,以往版...

weixin_39883260的博客 105

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

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

python 3.8.0安卓_Python 3.8.0 正式版发布,新特性初体验

北京时间 10 月 15 日,Python 官方发布了 3.8.0 正式版,该版本较 3.7 版本再次带来了多个非常实用的新特性。赋值表达式PEP 572: Assignment Expressions新增一种新语法形式::=,又称为“海象运算符”(为什么叫海象,看看这两个符号像不像颜表情),如果你用过 Go 语言,应该对这个语法非常熟悉。具体作用我们直接用实例来展示,比如在使用正则匹配时,以往版...

weixin_39721953的博客 177

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python 3.9.0 已正式发布

Python 3.9.0 已正式发布。与 3.8 系列相比,Python 3.9 的主要亮点有: 新的语法特性PEP 584,union operators 已添加至 dict;PEP 585,标准集合中的类型提示泛型;PEP 614,放宽对装饰器的语法限制。新的内置特性PEP 616,用于删除前缀和后缀的字符串方法。标准库的新特性PEP 593,灵活的函数和变量注释;添加了 os.pidfd_open(),允许进行进程管理,而不产生竞争和信号。改进 InterpreterPEP 573,从 C 扩展类型的

哦,原来你也在这里。 6302

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python3.0正式发布的年份是_来喽,来喽,Python 3.9正式版发布了~~~

摘要:2020年10月5日,在全国人员欢度国庆节和中秋节时,Python 3.9 悄摸摸地正式发布了。2020年10月5日,在全国人员欢度国庆节和中秋节时,Python 3.9 悄摸摸地正式发布了。我们来一起来看看,这个版本有哪些好玩的新特性,以及对我们部门目前的产品可能会带来哪些影响。因为jupyter notebook/lab等工具还没有相应适配到python 3.9,所以我们还无法使用,因此...

weixin_39915427的博客 1417

Python 3.7.0 版本正式发布,新特性来袭

Python 3.7.0版本已经于美国时间2018年6月27日发布,同时发布的也有Python 3.6.6版本,下面是来自Python官网的通知:我们代表Python开发...

Python中文社区 1万+

python3.8.0怎么设置字体大小_Python 3.8.0 正式发布,一大波新特性和优化来袭

【新智元导读】Python 官网静悄悄地发布了一则大消息:正式发布 Python 3.8.0!新版本较 3.7 版增加了一大波新功能和优化,来新智元 AI 朋友圈与 AI 大咖一起参与讨论吧~今天,Python 官网宣布,正式发布 Python 3.8.0!Python 3.8.0 现已推出。代表 Python 开发社区和 Python 3.8 发布团队,我们很高兴地宣布 Python 3.8.0...

weixin_39937635的博客 1014
上一篇: 7个机械键盘、21个小度音箱、28本技术书籍免费送!
下一篇: 用Python做个海量小姐姐素描图
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值