举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > python3.10更新了什么 Python3.10更新

python3.10更新了什么 Python3.10更新

2023-03-15 22:20 Python3教程

python3.10更新了什么 Python3.10更新

python3.10更新了什么

Python 3.10是Python的最新版本,它提供了一些新功能和改进,以满足现代编程需求。

首先,Python 3.10引入了一个新的语法特性——“Walrus Operator”(:=)。它可以在表达式中分配值,而不必使用临时变量。这使得代码更加简洁易读。例如:

if (n := len(a)) > 10: 
    print(f"List is too long ({n} elements, expected <= 10)")

此外,Python 3.10还增加了对字符串标记的支持。字符串标记是一种特殊的字符串表达式,可以用来创建复杂的字符串样式。例如:

name = "John" 
print(f"""Hello {name}! 
Welcome to the party!""")

此外,Python 3.10还增加了对数字标量单位的支持。数字标量单位允许在数字中使用单位后缀来表明数字的大小或单位。例如:

x = 8_000_000  # 8 million in "underscore" notation 
y = 8e6 # 8 million in scientific notation 
z = 8M # 8 million in unit suffix notation 

此外,Python 3.10还增加了对新的内部函数、文件处理函数、时间函数、内部API、内部工具、内部库函数以及其他一些新特性的支持。所有这些特性都将有助于使Python成为一门强大而实用的语言。

Python3.10更新

python3.10版本于2021年10月4日发布正式版,该版本带来了七大新特性。为了让大家对新版本有更好的认识,接下来的介绍会尽量添加python3.10版本和旧版本的代码进行对比。

 带*号的为比较重要的特性。

*类型检查改进

Python3.10版本中,联合运算符使用“|”线来代替了旧版本中的Union[]方法,使得程序更加简洁,不仅如此,Python3.10在一些内置函数中,同样可以利用“|”线的联合运算符来提升程序的性能。

在函数中:

from typing import Union # 使用Union需要引入对应的包

# 旧版本

def oldFunc(para: Union[int, float]) -> Union[int, float]: 

    return para ** 2

# 新版本

def newFunc(para: int | float) -> int | float:

    return para ** 2

print(newFunc(3))

在内置函数中使用联合运算符:

# 旧版本

print(isinstance("", (str, int)))

# 新版本

print(isinstance("", str | int))

*上下文管理器

python3.10 中,with 支持使用外层圆括号来使用多个上下文管理器,可以连续多行地书写。这允许将过长的上下文管理器集能够以与之前 import 语句类似的方式格式化为多行的形式。例如,以下这些示例写法现在都是有效的:

with (CtxManager() as example):
    pass

with (CtxManager1(),
    CtxManager2()):
    pass

with (CtxManager1() as example,
      CtxManager2()):
    pass

with (CtxManager1(),
      CtxManager2() as example):
    pass

with (CtxManager1() as example1,
    CtxManager2() as example2
):
    pass

*模板匹配

Python 3.10 引入了结构化的模式匹配,通过match...case关键词来完成,可以匹配字典,类以及其他更复杂的结构。match...case的模式匹配,在使用的方式上与C++中的switch有很多的相似之处。

下面的函数中,case函数通过匹配grade,如果grade为"A",则匹配到第一个例子,如果grade为"B",则匹配到第二个例子...如果前面的案例都不满足时,则输出最后的默认结果。

grade = "B"
match grade: # 看grade变量,并与下面的case做对比(类似其他语言的switch
case "A": # 如果grade为"A",则执行该代码块
print("很棒")
case "B": # 如果grade为"B",则执行该代码块
print("做得好")
case "C": # 如果grade为"C",则执行该代码块
print("您通过了")
case "D":
print("最好再试一下")
case _: # 如果上面的所有case都未命中,则执行该代码块(类似于其他语言的default)
print("无效的成绩")

字典增加mapping属性

在Python3.10中,针对于字典的三个方法,items,keys和values都增加了一个新的“mapping”属性,通过上述的程序可以发现,对三个方法调用mapping属性后都会返回原字典数据。

mydict = {"": 1, "baidu": 2, "Google": 3}

# 旧版本
print(mydict.keys())
print(mydict.values())
print(mydict.items())

# 新版本
keys = mydict.keys()
values = mydict.values()
items = mydict.items()

print(keys.mapping)
print(values.mapping)
print(items.mapping)

# 可以理解为我们可以根据字典的keys,values,items反向推出这个字典

函数 zip() 增加 strict 参数

Python3.10中对于zip函数添加了strict参数,顾名思义,strict参数就是要严格的遵守参数长度的匹配原则,下面程序中,keys和values列表的长度并不一致。

旧版本的zip函数会根据长度最短的参数来创建字典。新版本的zip函数中,当设定strict参数设置为True时,则要求zip的输入参数必须要长度一致,否则就会报错。

keys = ["", "Baidu", "Google"]
values = [1,2,3,4]
#旧版本
try:
print(dict(zip(keys,values)))
except:
print("字典创建失败")

try:
print(dict(zip(keys, values, strict=True)))
# 增加strict参数后,如果两个列表长度不等,创建的时候会报错
except:
print("字典创建失败")#报错后使用try-except语句捕获

二进制表示中的频率为1的数量统计

在Python3.10版本中,可以通过调用bit_count函数来统计二进制中数字“1”的个数,当然,在旧版本中,也可以通过很简单的代码实现这个功能。

value = 5
#旧版本
print(bin(value).count("1"))
#新版本
print(value.bit_count())

类型别名的更改

在旧版本中,可以直接通过不同类型的赋值操作来赋予类型新的名字,而在Python3.10版本中,则通过TypeAlias来规定了类型名字的替换。这样操作的优势在于能够让程序开发人员和Python编辑器更加清楚的知道newname是一个变量名还是一个类型的别名,提升程序开发的可靠性。

from typing import TypeAlias # 使用TypeAlias需要导入相关的包

#旧版本 oldname = str def oldFunc(paran:olaname)->oldname:     return param+param #新版本 newname:TypeAlias = str def newFunc(param:newname)->newname:     return param+param print(newFunc(""))

准备弃用Distutils 内置库

由于Distutils库的功能已经被此setuptools和package库取代了,所以本着简洁性的原则,Distutils在不久的将来(3.12版本)将会被完全的删除掉。

 Distutils包为将待构建和安装的额外的模块,打包成 Python 安装包提供支持。新模块既可以是百分百的纯 Python,也可以是用 C 写的扩展模块,或者可以是一组包含了同时用 Python 和 C 编码的 Python 包。

大多数 Python 用户 不会 想要直接使用这个包,而是使用 Python 包官方维护的跨版本工具。特别地, setuptools 是一个对于 distutils 的增强选项,它能提供:

  • 对声明项目依赖的支持
  • 额外的用于配置哪些文件包含在源代码发布中的机制(包括与版本控制系统集成需要的插件)
  • 生成项目“进入点”的能力,进入点可用作应用插件系统的基础
  • 自动在安装时间生成 Windows 命令行可执行文件的能力,而不是需要预编译它们
  • 跨所有受支持的 Python 版本上的一致的表现


阅读全文
以上是名动网为你收集整理的python3.10更新了什么 Python3.10更新全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们