社区所有版块导航
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.11

Python绿色通道 • 3 年前 • 587 次点击  

↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包


Python3.11正式版发布已经好几天了,刚好今天瞅了一下,写了几个例子,捡几个比较实用的特性说说

更友好的异常提示

直接看例子:




    
def main():
    x = {"a": 1}
    x['a']['b']['c']['d'] = 1


if __name__ == "__main__":
    main()

假设x是通过调用第三方API拿回来的数据,a、b、c、d这些key本以为都是存在的key,运行:


上面是python3.10及更早版本抛出的异常,subscriptable 指下标的意思,这的意思是说int对象没有下标,只有字典和列表这样的对象才有。看错误日志很难定位到底是哪个int对象不能subscriptable。你要挨个去调试才知道。



Python3.11版本给出了更人性化的错误提示,^^^标记的位置就是真正报错的地方。

另外,BaseException还添加了一个add_note()方法,我们可以在捕获异常时加入一些附加信息方便后续的bug定位。

def main() -> None:
    try:
        raise TypeError("bad type")
    except TypeError as e:
        e.add_note("这是一段附加信息")
        logging.exception(e)

支持TOML格式文件解析

TOML是一种比YAML更清晰的配置文件格式,现在Python3.11直接内置了标准库来解析TOML文件。

import pprint
import tomllib

with open("test.toml", "rb") as f:
    data = tomllib.load(f)
    pprint.pprint(data)

toml文件

a = "a"
b = "b"

c.x = "c.x"
c.y = "c.y"

[d]
x = "d.x"
y = "d.y"

[[e]]
x = "e[0].x"
y = "e[0].y"

[[e]]
x = "e[1].x"
y = "e[1].y"

[f.A]
x.y = "f.A.x.y"

[f.B]
x.y = """
f.
B.
x.
y
"""

[f.C]
points = [
{ x=1, y=1, z=0 },
{ x=2, y=4, z=0 },
{ x=3, y=9, z=0 },
]

解析出来的字典对象是:

更丰富的类型提示

新增Self类型


以前在类中定义一个方法如果要声明返回值是类本身的实例,要写成类的字符串形式,哪天要是给这个类重命名,这个字符串也得跟着改。Python3.11新增了
Self后方便不少。

新增字符串枚举StrEnum

python3.10前定义一个字符串枚举时,只能继承Enum类,现在可以直接继承StrEnum类了,它是字符串str的子类。所以枚举值也是个字符串,  现在可以直接用枚举值与字符串做比较,而不需要像3.10一样先获取value

性能提升

性能方面,python3.11对解释器做了不少优化,整体性能比3.10提高了10~60%。这要归功于一个叫 Faster CPython的项目,Faster CPython 是一个由微软赞助,Python 之父 Guido van Rossum、微软高级软件工程师 Eric Snow 和 Mark Shannon 共同负责该项目。可以预计未来Python还会更快。






    
  1. 一款懒人必备的Python爬虫神器

  2. 如何快速把你的 Python 代码变为 API

  3. 13个好用到起飞的Python技巧!

  4. 用Python做了个私活,小赚1W,说下接单心得

  5. 原来Matplotlib绘图也可以这么漂亮,这次真的是学习到了!



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