社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python3.12发布,性能提升5%(附离线安装包及学习资料)

Crossin的编程教室 • 3 年前 • 673 次点击  

入门教程、案例源码、学习资料、读者群

请访问: python666.cn

大家好,欢迎来到 Crossin的编程教室 !

本月初,python 3.12 正式发布,现在已经可以从官网下载安装了。

之前有小伙伴反应,Python 官网经常打不开或者下载很慢,所以我们特地下载好了 Python 3.12 的离线安装包,包括 Windows 和 Mac 的,放在了云盘上,有需要的同学可自取。

云盘里还有不少 Python 的学习资料,包括编程教室的教程合集、几本开源电子书、近50个实例代码。

大家可以直接「转存」备份,以便学习时查阅使用。

云盘地址:

https://caiyun.139.com/m/i?145C7xd0H0vDV 

点击文末「阅读原文」或识别此二维码可进入

那么 Python 3.12 到底做了哪些更新,又是否值得升级呢?

我们先来看下官方给出的版本更新日志:

给大家翻译一下:

新功能

  • 更加灵活的 f-string 解析,允许许多以前不允许的操作(PEP 701)。

  • 在 Python 代码中支持 buffer 协议(PEP 688)。

  • 新的调试/性能分析 API(PEP 669)。

  • 支持具有单独全局解释器锁(PEP 684)的独立子解释器。

  • 错误消息进一步改进。现在,由于拼写错误可能导致的更多异常会向用户提出建议。

  • 支持 Linux perf 性能分析器,以在跟踪中报告 Python 函数名称。

  • 许多大大小小的性能改进(如PEP 709和对BOLT二进制优化器的支持),预计将实现整体性能提升约5%。
类型注解
  • 为泛型类引入了新的类型注解语法(PEP 695)。
  • 为方法引入了新的override装饰器(PEP 698)。

这其中一部分更新对我们写代码来说没有什么影响,比如对 Python 性能的提升,直接就会反应在新版本中,不需要开发者做任何额外的操作。

另外有一些功能,可能我们平常也不太会用到。

本次版本更新体感比较明显的大概是这两样:

  1. f-string的功能扩展
  2. 错误消息的改进
下面我们用官方文档中提供的几个示例来简单演示一下。

1. f-string的功能扩展

f-string 是 Python 3.6 开始引入的新特性,它让字符串格式化操作更加丝滑。而现在,它又增加了一些之前不支持的功能。

支持引号中使用同样的引号字符,并且可以无限嵌套

>>> f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"'2'
支持多行字符串
>>> f"This is the playlist: {", ".join([...     'Take me back to Eden',  # My, my, those eyes like fire...     'Alkaline',              # Not acid nor alkaline...     'Ascensionism'           # Take to the broken skies at last... ])}"'This is the playlist: Take me back to Eden, Alkaline, Ascensionism'
支持使用转义字符
>>> print(f"This is the playlist: {"\n".join(songs)}")This is the playlist: Take me back to EdenAlkalineAscensionism>>> print(f"This is the playlist: 


    
{"\N{BLACK HEART SUIT}".join(songs)}")This is the playlist: Take me back to Eden♥Alkaline♥Ascensionism
2. 错误消息的改进

新版本的报错信息提示更加明确了,甚至还会给出一些建议。

比如提醒你是不是模块没导入

sys.version_infoTraceback (most recent call last):  File "", line 1, in <module>NameError: name 'sys' is not defined. Did you forget to import 'sys'?
是不是成员变量忘了加self
>>> class A:...    def __init__(self):...        self.blech = 1... ...    def foo(self):...        somethin = blech... >>> A().foo()Traceback (most recent call last):  File "", line 1    somethin = blech               ^^^^^NameError: name 'blech' is not defined. Did you mean: 'self.blech'?
以及是不是拼写错误
>>> from collections import chainmapTraceback (most recent call last):  File "", line 1, in <module>ImportError: cannot import name 'chainmap' from 'collections'. Did you mean: 'ChainMap'?
此外,类型注解是 Python 近年来版本更新的重点,从更新日志里把它单独列为一栏就可见一斑。

比如这次又新增了 TypedDict 类型字典对 **kwargs 关键字参数进行更明确的注解:

from typing import TypedDict, Unpack
class Movie(TypedDict): name: str year: int
def foo(**kwargs: Unpack[Movie]): ...
调用示例:
def foo(**kwargs: Unpack[Movie]) -> None: ...
movie: dict[str, object] = {"name": "Life of Brian", "year": 1979}foo(**movie) # WRONG! Movie is of type dict[str, object]
typed_movie: Movie = {"name": "The Meaning of Life", "year": 1983}foo(**typed_movie) # OK!
another_movie = {"name": "Life of Brian", "year": 1979}foo(**another_movie) # Depends on the type checker.
那么,我们现在需要更新到 Python 3.12 吗?

我的建议是:

  1. 初学者不要更新。因为这些新功能不是非有不可,而此时很多但第三方库还没有完全适配 3.12 版本,存在不兼容的可能。用最新的版本弊大于利。

  2. 生产环境不要更新。这点不必我说,想必程序员们都懂的。除了适配方面的原因,本身一个大版本的最初几个小版本就可能存在更多的bug,建议让版本飞一段时间稳定后再用,没必要去做小白鼠。

  3. 对于开发者自己练习来说,建议更新。可以提前尝鲜,早点用上新功能。说不定,你还能给官方找出点bug呢。

作者:Crossin的编程教室



Crossin的第2本书《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》已经上市了。

点此查看上一本《码上行动:零基础学会Python编程》介绍

本书从 Python 和 Excel 结合使用的角度讲解处理分析数据的思路、方法与实战应用。不论是希望从事数据分析岗位的学习者,还是其他职业的办公人员,都可以通过本书的学习掌握 Python 分析数据的技能。书中创新性地将 ChatGPT 引入到教学当中,用 ChatGPT 答疑并提供实训代码,并介绍了使用 ChatGPT 辅助学习的一些实用技巧,给学习者带来全新的学习方式。


京东双十一5折进行中

读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。


感谢转发和点赞的各位~

_往期文章推荐_

编程教室本周视频更新
Python入门|是循环,也是遍历



【教程】: python

【答疑】: 666
更多资源点击「阅读原文」
↓点击「阅读原文」可获取Python3.12离线安装包及学习资料

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/163588