我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python3.8,3.9,3.10,3.11特性比较

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python3.8,3.9,3.10,3.11特性比较

最近计划将python2迁移到python3,由于本人学习时用的3.7版本,所以仅作大于3.7版本的比较。

文档地址:python3.8

新增赋值表达式:=(海象运算符)

作用:避免重复调用,使代码更加简洁。PS:别当GO写,它不支持声明并赋值变量

import re# 3.8if match := re.search(r"python", "I love python! \r\n And python love me! \r\n", re.I | re.M | re.DOTALL):    print(match.group())# 3.7match = re.search(r"python", "I love python! \r\n And python love me! \r\n", re.I | re.M | re.DOTALL)if match:    print(match.group())

仅限位置形参

作用:

  1. 新增了一个函数形参语法 / 用来指明某些函数形参必须使用仅限位置而非关键字参数的形式。
  2. /区分了前后用什么传参方式
# *号代表e,f必须用键值# /号代表a,b必须用位置def f(a, b, /, c, d, *, e, f):    print(a, b, c, d, e, f)# 合法调用f(10, 20, 30, d=40, e=50, f=60)# 不合法调用f(10, b=20, c=30, d=40, e=50, f=60)   # b不能是关键词参数f(10, 20, 30, 40, 50, f=60)           # e必须是关键字参数

7的老人感觉:这两个符号加上会降低代码可读性

f-字符串支持 = 用于自动记录表达式和调试文档

作用:f’{expr=}’ 的 f-字符串将扩展表示为表达式文本

author = "Generalzy"print(f'{author=}')# author='Generalzy'

dict 和 dictview 可以使用 reversed() 按插入顺序反向迭代

作用:python3.7开始后,python的dict就有序了,现在支持反转字典顺序

dic = {"name": "generalzy", "gender": 1, "age": "2000"}for key, val in dic.items():    print(key, val)# name generalzy# gender 1# age 2000print(reversed(dic))# for key in reversed(dic):    print(key)# age# gender# name

asyncio.run()更加稳定

作用:asyncio.run() 已经从暂定状态晋级为稳定 API。 此函数可被用于执行一个 coroutine 并返回结果,同时自动管理事件循环

import asyncioasync def main():    await asyncio.sleep(0)    return 42asyncio.run(main())

因此 asyncio.run() 应该作为运行 asyncio 程序的首选方式。

csv.DictReader返回值改变

作用:csv.DictReader 现在将返回 dict 而不是 collections.OrderedDict,此工具现在会更快速且消耗更少内存同时仍然保留字段顺序。

multiprocessing增加进程间共享内存的方法

作用:添加了新的 multiprocessing.shared_memory 模块。

文档:python3.9

字典合并 (|)与更新运算符(|=)

作用:它们为现有的 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'}

增加了 str.removeprefix(prefix) 和 str.removesuffix(suffix) 用于方便地从字符串移除不需要的前缀或后缀。

作用:用于方便地从字符串移除不需要的前缀或后缀。

标准多项集中的类型标注泛型

作用:

  1. 可以使用内置多项集类型例如 list 和 dict 作为通用类型而不必从 typing 导入对应的大写形式类型名 (例如 List 和 Dict)。
  2. 标注类型更加方便了。
def greet_all(names: list[str]) -> None:    for name in names:        print("Hello", name)

新的解析器

Python 3.9 使用于基于 PEG 的新解析器替代 LL(1)。 新解析器的性能与旧解析器大致相当,但 PEG 在设计新语言特性时的形式化比 LL(1) 更灵活。

file 属性将是一个绝对路径,而不是相对路径。

作用:__file__在任何情况下都将是一个绝对路径

新增时区zoneinfo模块

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

>>> from zoneinfo import ZoneInfo>>> from datetime import datetime, timedelta>>> # Daylight saving time>>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))>>> print(dt)2020-10-31 12:00:00-07:00>>> dt.tzname()'PDT'>>> # Standard time>>> dt += timedelta(days=7)>>> print(dt)2020-11-07 12:00:00-08:00>>> print(dt.tzname())PST

random新增方法生成随机字节串

增加了新的 random.Random.randbytes 方法:生成随机字节串。

文档:python3.10

带圆括号的上下文管理器

作用:允许将过长的上下文管理器集能够以与之前 import 语句类似的方式格式化为多行的形式。

with (    CtxManager1() as example1,    CtxManager2() as example2,    CtxManager3() as example3,):    ...

更清楚的错误消息

结构化模式匹配match…case…语句

作用:类似其他语言的:switch…case…

def http_error(status):    match status:        case 400:            return "Bad request"        case 404:            return "Not found"        case 418:            return "I'm a teapot"        case 419 | 420 | 421:        return "我加的"        case _:            return "Something's wrong with the internet"# 模式和类class Point:    x: int    y: intdef location(point):    match point:        case Point(x=0, y=0):            print("Origin is the point's location.")        case Point(x=0, y=y):            print(f"Y={y} and the point is on the y-axis.")        case Point(x=x, y=0):            print(f"X={x} and the point is on the x-axis.")        case Point():            print("The point is located somewhere else on the plane.")        case _:            print("Not a point")            # 嵌套模式:模式可以任意地嵌套。match points:    case []:        print("No points in the list.")    case [Point(0, 0)]:        print("The origin is the only point in the list.")    case [Point(x, y)]:        print(f"A single point {x}, {y} is in the list.")    case [Point(0, y1), Point(0, y2)]:        print(f"Two points on the Y axis at {y1}, {y2} are in the list.")    case _:        print("Something else is found in the list.")# 约束项:可以向一个模式添加 if 子句,称为“约束项”。 如果约束项为假值,则 match 将继续尝试下一个 case 语句块。 match point:    case Point(x, y) if x == y:        print(f"The point is located on the diagonal Y=X at {x}.")    case Point(x, y):        print(f"Point is not on the diagonal.")

类比一下GO的:

type P struct {x,y int}func main() {// invalid case []int{...} in switch (can only compare slice a to nil)//a:=[]int{1,2}//switch nil{//case []int{1,2}://fmt.Println(a)//}p:=P{1,2}switch p {case P{1,2}:fmt.Println(p)// {1 2}}}

新的类型联合运算符X | Y

作用:简洁标注

def square(number: int | float) -> int | float:    return number ** 2

int 类型新增了一个方法 int.bit_count()

作用:返回给定整数的二进制展开中值为一的位数,或称“比特计量”。

现在 dict.keys(), dict.values() 和 dict.items() 所返回的视图都有一个 mapping 属性

作用:给出包装了原始字典的 types.MappingProxyType 对象。

zip() 函数有一个可选的 strict 旗标

作用:要求所有可迭代对象的长度都相等,否则异常

文档:python3.11

比上一个版本快60%

Self type

作用:标注增加self类型

class MyLock:    def __enter__(self) -> Self:        self.lock()        return self

来源地址:https://blog.csdn.net/General_zy/article/details/128426649

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python3.8,3.9,3.10,3.11特性比较

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

比较PyCharm社区版和专业版的特性

在软件开发领域,选择合适的集成开发环境(IDE)对开发人员至关重要。PyCharm作为一款功能强大、易用的Python集成开发环境,受到了广大开发者的青睐。PyCharm分为社区版(Community Edition)和专业版(Profes
比较PyCharm社区版和专业版的特性
2024-02-23

泛型与golang中其它语言特性的比较

go中的泛型提供了代码的可重用性,允许创建可用于不同类型数据的代码。与java和c++++的泛型相比,go的泛型性能开销较低,但类型推理仅为有条件,约束有限。泛型与 Go 其他语言特性的比较概述泛型是一种编程语言特性,允许创建可用于各种
泛型与golang中其它语言特性的比较
2024-05-04

Blob和Clob在Oracle中的应用范围及特性比较

Blob 和 Clob 在 Oracle 中都是用来存储大数据类型的字段,但它们在具体的应用范围和特性上有一些不同。本文将详细比较 Blob 和 Clob 的使用方式,并通过具体的代码示例来展示它们的应用。Blob 和 Clob 的定义
Blob和Clob在Oracle中的应用范围及特性比较
2024-03-08

Spyder vs PyCharm:比较特性,找出最适合你的Python IDE

Spyder和PyCharm:功能对比,选择最适合你的Python IDE近年来,Python作为一种简洁、易学的编程语言受到了广泛的欢迎和应用。与此同时,对于Python开发者来说,选择一个合适的集成开发环境(IDE)至关重要。在众多P
Spyder vs PyCharm:比较特性,找出最适合你的Python IDE
2024-02-24

深入比较Go与Golang的特点

Go与Golang的特点比较Go语言(也称为Golang)是一种由Google开发的开源编程语言,它结合了现代化的语法和高效的并发模型,因其简洁明了、高效可靠而备受开发者青睐。在本文中,我们将深入比较Go与Golang的特点,通过具体的代
深入比较Go与Golang的特点
2024-02-26

FreeBSD8.0与Ubuntu9.10的性能比较

本篇内容介绍了“FreeBSD8.0与Ubuntu9.10的性能比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Ubuntu 9.10将在
2023-06-17

Hadoop和spark的性能比较

本篇内容主要讲解“Hadoop和spark的性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hadoop和spark的性能比较”吧!  Hadoop和spark的性能比较  Spark在内
2023-06-02

Golang 与 Python 的性能比较

go 在性能上通常优于 python,这归因于其编译性、并发性支持和高效的内存管理。基准测试显示 go 的响应时间更快,而实战案例展示了其在图像处理和科学计算上的优势。Golang 与 Python 的性能比较Go 和 Python 是两
Golang 与 Python 的性能比较
2024-05-11

Laravel和CodeIgniter的性能比较

基准测试和实战案例表明,codeigniter 在性能方面优于 laravel。基准测试显示 codeigniter 在数据库查询、路由、模型保存和视图解析方面表现更佳。在实战电子商务应用程序的负载测试中,codeigniter 也展现出更
Laravel和CodeIgniter的性能比较
2024-05-16

PHP数组反转性能比较

在 php 中,反转数组的方法性能从快到慢依次为:array_reverse() 函数、手动反转使用 for 循环、手动反转使用 while 循环。在测试数组大小为 10,000 时,array_reverse() 函数执行时间为 0.00
PHP数组反转性能比较
2024-04-28

C++ vs Rust vs Go 性能比较

本文对C++、Rust和Go三种编程语言编写的gunzip程序进行了性能比较,通过基准测试试图尽可能公平的比较它们的性能。

分析比较Golang和Python爬虫的语法特性、并发处理和可扩展性

Golang爬虫与Python爬虫的比较:语法特性、并发处理和可扩展性解析引言:随着互联网的迅速发展,数据成为了企业和个人获取信息的重要途径之一。为了从互联网上获取数据,爬虫成为了一种常用的技术工具。爬虫的实现方式有很多种,其中Golan
分析比较Golang和Python爬虫的语法特性、并发处理和可扩展性
2024-01-20

HTTPS、SPDY和HTTP/2的性能比较

HTTPS、SPDY和HTTP/2都是与网络通信相关的协议,它们在性能方面有一些不同。HTTPS是HTTP的加密版本,通过使用SSL/TLS协议对数据进行加密来保护通信安全。由于加密和解密操作会增加数据传输的延迟和CPU负载,因此相比于未加
2023-09-22

C#怎么比较dynamic和Dictionary性能

C#怎么比较dynamic和Dictionary性能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。开发中需要传递变参,考虑使用 dynamic 还是 Dictionary(准
2023-06-17

比较适合女性的IT岗位

作为当前最热门的行业,IT引领着科技的发展,无论是薪资待遇还是发展前景都远胜于其他传统行业。

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录