Python3.12 新版本之f-string的几个新特性

目录

概述 

f-string表达式

1. 支持转义字符

2. 支持多行字符串

3. 支持重复使用的引号种类

4. 支持无限嵌套

附录

Python3.12新语法特性


概述 

Python 3.12在10月2日发布,新版本包含一系列对语言和标准库的改变。 库的改变主要集中在清理已弃用的 API、可用性和正确性等方面。 值得注意的是,distutils 包已从标准库中移除。 os 和 pathlib 中的文件系统支持增加了许多改进,而且部分模块的性能也获得了提升。语言的改变主要集中在可用性方面,如 f-字符串 的许多限制已被移除,并且改进错误信息的提示,使开发者能更好地理解错误发生的原因;新的类型形参语法 和 type 语句提升了 泛型类型 和 类型别名 配合静态类型检查器使用时的效率。另外还有其他一系列的性能改进,开发团队称其性能整体提升了5%。以下对其中的f-string解析的新特性作些简单分享:

f-string表达式

1. 支持转义字符

老版本中f-string原本不能包含任何反斜杠符号“\”和Unicode转义,新版本允许使用。但特殊的大括号的转义用双写: {{ 和 }}。例如:

print(f"Hello\n{{H\na\nn\nn}}") 

Hello
{H
a
n
n}

2. 支持多行字符串

过去的版本中,如果定义的f-string是单行字符串,那么大括号里面的表达式也必须写在一行内。现在这个限制也没了,只要符合语法就可以。例如:

x,y=1,2
print(f"""{x}.This is a
multiline f-string.
{y}.It can contain any text.
另外:表达式可以换行书写:{x+
y**3}
""")

输出:

1.This is a  
multiline f-string.
2.It can contain any text. 
另外:表达式可以换行书写:9

3. 支持重复使用的引号种类

新版本中可以在表达式里重复使用f-string使用过的引号种类,不用像老版本中只能在双引里放单引号,单引号里放双引呈。例如:

print(f"重复相同的引号: {"+".join(["1","2","3"])}")

输出:

重复相同的引号: 1+2+3 

4. 支持无限嵌套

在新版本中,用户可以无限地嵌套f-string,这在过去受限于引号冲突是无法做到的,这是特性3引申出来的功能。例如:

name = "Hann"  
print(f"Hello, {f"Hello, {name}!"}!") 
print(f"{f"{f"{f"{f"{f"{name+str(2023.12)}"}"}"}"}"}")

输出:

Hello, Hello, Hann!
Hann2023.12


再举一个稍微复杂一点的例子:

name = "Hann"
age = 50
city = "KunShann"
address = f"123 Main St, {city}"
template = f"""  
Hello, {name}! \nYou are {age} years old.  
Your address is {address}.  
"""
print(template)

输出: 

Hello, Hann! 
You are 50 years old.  
Your address is 123 Main St, KunShann. 


附录

Python3.12新语法特性

PEP 695,类型形参语法和 type 语句

新的语法特性:

PEP 701,f-字符串 语法的改进

解释器的改进:

PEP 684,解释器级的单独 GIL

PEP 669,低开销的监控

针对 NameError, ImportError 和 SyntaxError 异常 改进了 'Did you mean ...' 提示消息。

对 Python 数据模型的改进:

PEP 688,使用 Python 的 缓冲区协议

标准库中的重大改进:

pathlib.Path 类现在支持子类化

os 模块获得了多项针对 Windows 支持的改进

在 sqlite3 模块中添加了 命令行界面。

基于 运行时可检测协议 的 isinstance() 检测获得了 2 至 20 倍的提速

asyncio 包的性能获得了多项改进,一些基准测试显示有 75% 的提速。

在 uuid 模块中添加了 命令行界面。

由于 PEP 701 中的更改,通过 tokenize 模块生成令牌(token)的速度最多可提高 64%。

安全改进:

用来自 HACL* 项目的经过正式验证的代码替代 SHA1, SHA3, SHA2-384, SHA2-512 和 MD5 的内置 hashlib 实现。 这些内置实现保留作为仅在当 OpenSSL 未提供它们时使用的回退选项。

C API 的改进:

PEP 697,不稳定 C API 层

PEP 683,永生对象

CPython 实现的改进:

PEP 709,推导式内联化

对 Linux perf 性能分析器的 CPython 支持

在受支持的平台上实现栈溢出保护

新的类型标注特性:

PEP 692,使用 TypedDict 来标注 **kwargs

PEP 698,typing.override() 装饰器

重要的弃用、移除或限制:

PEP 623: 在 Python 的 C API 中移除 Unicode 对象中的 wstr,使每个 str 对象的大小缩减至少 8 个字节。

PEP 632: 移除 distutils 包。 请参阅 迁移指南 了解有关替换其所提供的 API 的建议。 第三方 Setuptools 包将继续提供 distutils,如果你在 Python 3.12 及更高版本中仍然需要它的话。

gh-95299: 不在使用 venv 创建的虚拟环境中预装 setuptools。 这意味着 distutils、setuptools、pkg_resources 和 easy_install 默认将不再可用;要访问这些工具请在 激活的 虚拟环境中运行 pip install setuptools。

移除了 asynchat、asyncore 和 imp 模块,以及一些 unittest.TestCase 方法别名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows+ubuntu离线安装翻译软件有道词典

背景: 某些情况下,需要在无法连接互联网的电脑上翻译单词,句子以及段落,就需要能离线安装和翻译的翻译软件,具备一定的词库量,目前找到了《有道词典》。 windows 亲测,无法联网的win10中安装…

OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 在最新的 OpenAI 官方 APIs 文档中,Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。 官方文档地址&#xff…

黑马程序员SSM框架-Spring

视频链接:Spring-00-Spring课程介绍_哔哩哔哩_bilibili Spring Framework系统架构以及学习顺序 核心概念(IoC、DI、Bean) IoC入门案例 导入坐标 提供需要被管理的类(Dao)和需要被注入的类(Service&#x…

netcore 上传文件到阿里云OSS问题

AliYunOSSHelper类&#xff1a; namespace VOL.WebApi {public class AliYunOSSHelper: IScopedDependency{private ILogger _logger;/// <summary>/// 阿里云帮助类/// </summary>/// <param name"logger"></param>/// <param name&quo…

windows安全配置实验手册

访问控制策略&#xff08;L1940520022J&#xff09; 预备知识 Windows 7中&#xff0c;不仅有面向软件的限制方法&#xff0c;还增加了一种名为AppLocker的访问控制策略&#xff08;仅适用于企业版和旗舰版&#xff09;。 实验环境 操作系统类型&#xff1a;windows 7。 实…

二叉树OJ题——4.相同的树

100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; /* 解题思路&#xff1a; 首先比较根节点是否相同&#xff0c;然后分别比较左右子树是否相同。 */bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(pNULL&&qNULL){return true;}if(pNULL||qNULL)…

利用html2Canvas将表格下载为html

给到我的需求是点击按钮时请求后端接口&#xff0c;根据后端返回的数据&#xff0c;生成表格,并将表格的内容直接下载为html,如下图。 平常做的下载都是后端返回二进制流&#xff0c;这次前端做下载那就必须把页面先画出来&#xff0c;因为下载下来的表格在页面上是不显示的&a…

直接插入排序和希尔排序

文章目录 前言概述直接插入排序本质分析代码总结 希尔排序一组一组排序多组同时进行完整的代码 总结 前言 排序&#xff1a; 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a; …

浅谈Java反射中的getFields()方法和getDeclaredFields ()方法

目录 1. 概念2. getFields()方法2. getDeclaredFields()方法4. 总结 1. 概念 反射是Java中一种强大的机制&#xff0c;允许在运行时获取、检查和操作类、方法、字段等信息&#xff0c;而不需要在编译时知道这些信息。 其中字段&#xff08;Field&#xff09;在Java中是类中用…

Unity向Web服务器上传和下载图片

Unity向Web服务器上传和下载图片 如果本片有看不懂的请查看我上篇文章&#xff1a;[Unity与Web服务器Post&#xff0c;Get](https://blog.csdn.net/qq_42194657/article/details/103031573)一、上传和下载图片1.在Unity中创建一个RawImage并在WebManager.cs脚本中添加一个Textu…

模式识别与机器学习-特征选择和提取

模式识别与机器学习-特征选择和提取 特征选择一些距离测度公式独立特征的选择准则一般特征的散布矩阵准则 离散K-L变换 谨以此博客作为复习期间的记录。 常见分类问题的流程&#xff0c;数据预处理和特征选择提取时机器学习环节中最重要的两个流程。这两个环节直接决定了最终性…

mac电脑系统性能检测:Geekbench 6最新 for mac

Geekbench 6是一款跨平台的性能测试软件&#xff0c;旨在全面衡量电脑在不同任务和应用程序中的性能。它适用于Windows、macOS、Linux等操作系统&#xff0c;以及移动设备如Android和iOS。 Geekbench 6主要特点包括&#xff1a; 全面覆盖各种性能测试领域&#xff0c;包括CPU…

CTF-PWN-栈溢出-中级ROP-【BROP-1】

文章目录 BROP(Blind ROP)攻击条件攻击路线三种gadget函数参数构造利用PLT构造rdx的参数的gadget找输出函数的plt输出二进制文件内容利用plt表中存在跳转到got表中相应的地址 BROP(Blind ROP) 即没有得到源码或者可执行程序文件的情况的文件下&#xff0c;只有一个提供的功能端…

C++学习实践(一)高频面试问题总结(附详细答案)

文章目录 一、基础常见面试题1、数组和链表区别2、深拷贝和浅拷贝相关问题的区别3、a和a区别4、c内存模型5、四种强制转换和应用场景 二、指针相关1、指针和引用的区别2、函数指针和指针函数3、传指针、引用和值4、常量指针和指针常量5、野指针6、智能指针的用法 三、关键字作用…

mySQL事务与存储引擎

目录 mySQL事务 1.事务的概念 2.事务的ACID特点 3.多客户端同时访问一个表时&#xff0c;出现的一致性问题 4.事务的隔离级别 5.事务的隔离级别作用范围 查询全局事务隔离级别 设置全局事务隔离级别 ​编辑查询会话事务隔离级别 设置会话事务隔离级别 6.事务控制语句…

这一次,我准备了 20节 PyTorch 中文课程

对于刚接触深度学习的小白来说&#xff0c;PyTorch 是必会的框架。 只是&#xff0c;很多小伙伴还没来得及开启学习之路&#xff0c;一个最重要的问题就摆在了面前&#xff1a; PyTorch&#xff0c;该怎么学呢&#xff1f; 很多同学会自己在网上找资料&#xff0c;不仅耗费时间…

如何使用IIS代理iServeriPortal

刘大 这里写目录标题 前言1.IIS使用http协议&#xff0c;iServer&iPortal使用http协议具体操作1.1 开启IIS管理器&#xff0c;并安装APR组件和url重写组件1.3 启用代理1.4 添加URL重写规则1.4.1 设置保留原始主机标头1.4.2 修改注册表1.5 iPortal的额外配置1.5.1 增加新的入…

使用防火墙是否可以应对DDoS攻击?

很多游戏行业公司对网络安全不够了解&#xff0c;觉得装个防火墙就可以万事大吉了。实际上使用防火墙确实是解决DDoS攻击问题的一种有效方法&#xff0c;一些更先进的防火墙还可以采用其他防御措施&#xff0c;例如:深度包检测、行为分析、人工智能等&#xff0c;来识别和防御各…

Vi文本编辑器如何使用,这里有详细步骤

Vi是一个强大的文本编辑器&#xff0c;包含在大多数Linux系统中&#xff0c;甚至是嵌入式系统中。有时&#xff0c;你必须在不包括更友好的文本编辑器的系统上编辑文本文件&#xff0c;因此了解Vi是至关重要的。 与Nano不同&#xff0c;Nano是一款易于使用的终端文本编辑器&am…

Shell 脚本应用(四)

正则表达式概述 正则表达式又称正规表达式&#xff0c;常规表达式。在代码中常简写为regex&#xff0c;regexp 或RE.正则表达式 是使用单个字符串来描述&#xff0c;匹配一系列符合某个句法规则的字符串&#xff0c;简单来说&#xff0c;是一种匹配字符串 的方法&#xff0c;通…