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

这篇具有很好参考价值的文章主要介绍了Python3.12 新版本之f-string的几个新特性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

目录

概述 

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 方法别名。文章来源地址https://www.toymoban.com/news/detail-761656.html

到了这里,关于Python3.12 新版本之f-string的几个新特性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python的工具包有哪些,python必备的几个包

    大家好,小编来为大家解答以下问题,python的工具包有哪些,python必备的几个包,今天让我们一起来看看吧! 为什么我喜欢Python?对于初学者来说,这是一种简单易学的编程语言,另一个原因:大量开箱即用的第三方库,正是23万个由用户提供的软件包使得Python真正强大和流

    2024年01月20日
    浏览(49)
  • 会C#如何学习Python的几个关键点

    首先要了解Python的语法和基本知识,可以阅读Python官方文档或者一些Python教程。如果你想系统学习Python,可以选择一些经典的Python书籍,如《Python基础教程》等。 熟悉Python的编程环境,选择一个适合自己的Python集成开发环境(IDE)或者编辑器。比较流行的Python IDE有PyCharm、

    2023年04月08日
    浏览(41)
  • 会Python如何学习C#的几个关键点

    Python和C#都是常用的编程语言,但两者之间存在一些重要的区别。如果你已经掌握了Python并希望学习C#,以下是几个关键点: 面向对象编程(OOP):C#是一种严格的面向对象编程语言,而Python则具有更灵活的OOP实现。在学习C#之前,建议先理解面向对象编程的基础概念,如类、

    2023年04月12日
    浏览(38)
  • Linux 中把Python3设为默认Python版本的几种方法

    先查看自己电脑里的python3版本: 在个人的home目录中,打开 .bashrc 文件,打开方式为 没有安装gedit文本编辑器的使用如下命令安装 或者使用vim、nano等。打开后,输入如下内容: 然后注销登录或者输入如下命令以使命令立刻生效 先删除默认的Python软链接: 然后创建一个新的

    2024年02月08日
    浏览(53)
  • 解决报错:找不到命令 “python”,您的意思是 “python3” 命令来自 Debian 软件包 python3 的几种方式

    如果系统中只安装了 Python 3,在执行命令 “python …” 时系统会无法识别,但每次输入 “python3 …” 又觉得有些麻烦和累赘, 因此,以下任意一种方法可以将 “python” 命令关联到 Python 3: 创建软链接: 你可以创建一个指向 Python 3 的软链接,使 “python” 命令自动执行 Py

    2024年02月03日
    浏览(69)
  • Python 新版来袭!3.12.0 安装教程!!

    Python 是一门面向对象的计算机程序设计语言,以简洁和优雅著称,可以用于网络爬虫、web开发、人工智能、机器学习、数据挖掘及分析等工作,是目前最受欢迎的编程语言之一。 目前常见的Python版本有Python2和Python3,Python3不向下(Python2)兼容,同时官方明确表示2020年1月1日

    2024年02月04日
    浏览(32)
  • 关于windows上Python3.12.0安装FastAPI入坑指南

    #工作笔记#  先说下起因: 年前兄弟说有个webapi的需求看怎么解决,抽空想到Python比较容易上手,而且FastAPI性能号称拥有可与NodeJS和Go并肩的极高性能。 FastAPI官网注明使用 Python 3.8+ ,而我本机又有从Py3.6到Py3.12的每个大版本,见下图 接着入坑开始了。。。 #问题描述: 1 )

    2024年02月22日
    浏览(49)
  • 2023最新版Python 3.12.0安装使用指南

    Python is a programming language that lets you work quickly and integrate systems more effectively. - www.python.org 要进行Python软件开发,首先要安装Python软件包。 本文简要介绍的Python 3最新版3.12.0的安装过程,希望对您有所帮助。 首先,访问Python官网:https://www.python.org 在主页上方导航栏,选择 Do

    2024年02月08日
    浏览(52)
  • Python3.9使用最新版pyinstaller将项目或程序打包成exe或者mac中的可执行文件

    pyinstaller 能够在 Windows、Linux、Mac 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。 PyInstaller 支持 Python 2.7 和 Python 3.3+。可以在 Windows、Mac 和 Linux 上使用,但是并不是跨平台的,

    2024年02月09日
    浏览(64)
  • 学习记录:Windows系统cuda11.6,安装pytorch1.12.0、python3.9

    1、查看显卡相关信息:nvidia-smi。显卡版本531.18,最大可以安装cuda12.1版本,安装步骤上一篇博客讲解过。 2、查看cuda版本:nvcc -V 3、查看anaconda是否安装:conda -V 4、查询cuda11.6对应的pytorch版本:https://pytorch.org/get-started/previous-versions/ 显示对应的pytorch1.12.0、1.12.1,接着查询适

    2023年04月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包