Python另类格式化f-strings特性

Python之数据类型 字符串是一种表示文本的数据类型,它由符号或者数值组成的一个连续序列,Python中的字符串是不可变的,字符串一旦被创建便不可修改。根据字符串中是否包含换行符,可以将字符串划分为单行字符串和多行字符串两种,他们各自定义的方式有所不同。 阅读详情

我们都知道在Python中字符串格式化常用的有百分号操作符(%)和 str.format()方式,前者最早是在Python 2.5版本以前所支持的,之后便推出了后者。而在Python3.6发布之后,在PEP 498提案或建议书中提出了一种新型字符串格式和机制,被称为(Literal String Interpolation) 字符串插值,也就是f-strings,他的特点是进行字符串格式化时都是以 f 字母开头的。

而不得不说的是,f-strings的运行速度很快。比%-string和str.format()这两种格式化方法都快得多。

我们先来一个直观感受,就是把过去几个字符串格式化方法和新方法做个比较。

name = 'Anders'
gender = 'Male'

str1 = '%s is a %s' %(name, gender)
print(str1)

str2 = '{} is a {}'.format(name, gender)
print(str2)

str3 = f'{name} is a {gender}'
str3

# 输出如下:
# Anders is a Male
# Anders is a Male
# 'Anders is a Male'

在上述例子中,可以看到f-strings方法直接以f字母开头,后面紧跟你要输入的字符串内容编辑,无论是单引号,双引号,三个单引号括起来都可以,然后把要输出的格式化变量内容对号入座即可。

以表达式方式传递

当然不仅仅是传递普通变量,还可以是一个函数方法,因为f-string实际上是在运行时计算的表达式,为了更加说明这点,引用PEP 498官方提到的内容。

从字符串中提取的表达式在f字符串出现的上下文中计算。这意味着表达式可以完全访问本地和全局变量。可以使用任何有效的Python表达式,包括函数和方法调用。

所以我们来看看如果把一个函数方法并调用它的例子。

def math_test(num1, num2):
    return num1 * num2

result = f'the result is {math_test(2, 3)}'
result

# 输出如下:
# 'the result is 6'

我们可以看到,如上例子中,先前定义了一个math_test函数方法,在f-string字面量格式化中直接就像平时调用函数一样给函数传递参数,就能得到对应的结果,并把结果替换到先前指定的位置。

多行f

如果我们想要输出的格式本身是以段落形式存在的,存在分行,那可以直接用三个单引号将整段内容括起来,随后输出的字符串格式也包含了段落分隔符。

name = 'Anders'
age = 25
pet = 'dogs'

info = f'''my name is {name},
my age is {age},
I like {pet}.'''

info

# 输出内容:
# 'my name is Anders,\nmy age is 25,\nI like dogs.'

如果是另一种情况,假设输入的字符串拼接很长,占用了屏幕的边宽,只需输入反斜杠"\"跟在折行内容的末尾去做处理即可。

name = 'Anders'
age = 25
pet = 'dogs'

info = f'my name is {name}, \
my age is {age}, \
I like {pet}.'

info

# 输出内容:
# 'my name is Anders, my age is 25, I like dogs.'
性能方面

引用PEP 498中网友翻译提到的:

f -string提供了一种方法,可以在字符串文字中嵌入表达式,使用最小的语法。应该注意的是,f-string实际上是在运行时计算的表达式,而不是一个常量值。在Python源代码中,f-string是一个文本字符串,前缀为f,其中包含括号内的表达式。表达式被替换为它们的值。

总之,在Python 3.6之后 f 字符串用法非常好用,在性能上,在容错率上,在外观上,都是值得推荐使用的。

win 11bitlocker恢复密匙一般情况的解决方式(这里指的是你现在使用的微软账户一直没有变更过) 本来没有打算写这一篇解决帖子的,但是最近好多微博的友友都在私我询问解决方法,孩子虽然很热心,但是真的回复不过来了,打字太累了,这里给大家简单指个路,希望能够对大家有所帮助。 当时出现这个问题的时候,一搜网上的解决方法都是重装系统什么的,真是吓死孩子啦。后来去微软的官网倒腾了半天解决了问题。其实只要你没有改过微软账户,你可以直接试试我这个方法,大概三到五分钟解决问题吧。 和我情况不一样的也可以参考一下贴吧里一些大佬的分享,或者实在着急我感觉去淘宝上找个解决也不是未尝不可。 出现问题: 解决方案: 直接去微软 阅读详情

相关推荐

IS-IS协议深度解析(二):LSDB同步机制与骨干网实战部署

本文深度解析IS-IS协议的LSDB同步机制与骨干网实战部署。详细阐述了DIS角色如何通过CSNP/PSNP报文高效管理链路状态数据库同步,并与OSPF DR机制进行对比。重点介绍了Level-2骨干网作为逻辑高速公路系统的工作原理,以及通过ATT比特位实现跨区域路由的自动化。最后提供了高可靠性骨干网的实战配置要点与验证方法。

kite3的博客 644

Python语言程序设计(5)——字符串

字符串 1 字符串的定义 字符串是一种用来表示文本的数据类型,它是由符号或者数值组成的一个连续序列,Python中的字符串是不可变的,字符串一旦创建便不可修改。 Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。 1.定义单行字符串 single_symbol = 'hello Python' #使用单引号定义字符串 double symbol = "hello Python" #使用双引号定义字符串 2.定义多行字符串 使用三

sem00000的博客 2114

从零搭建 AI 运维 Agent:告警自动诊断 + 修复的完整技术方案

适合读者:管理 5-50 台服务器的运维/SRE 工程师、技术负责人 技术栈:FastAPI + React + PostgreSQL + Redis + DeepSeek 关键词:AI运维、AIOps、自动化运维、智能告警、告警修复、Runbook自动化、DevOps、SRE、DeepSeek运维

weixin_38359457的博客 1640

案例驱动式Python学习笔记【第三篇】居民身份证信息提取

驱动案例 居民身份证是每位居民的唯一身份标识,18位的居民身份证号的信息包含省、市、出生日期和性别等信息, 那么本节将介绍如何按需提取相应的信息。居民身份证是每位居民的唯一身份标识,18位的居民身份证号 的信息包含省、市、出生日期和性别等信息,那么本节将介绍如何按需提取相应的信息。 字符串 字符串切片 切片是截取目标对象中一部分的操作,语法格式如下:[起始:结束:步长]。 切片步长默认为1。注意,切片选取的区间属于左闭右开型,切下的子串包含起始位,但不包含结束位。 假设string的值为: ”python

小柯的的博客 3300

伪距单点定位推导+DOP值分析(附matlab仿真代码)

伪距单点定位公式推导、DOP值分析与matlab仿真分析

shannanshouyin的博客 2512

100G SR4 光模块设计

目前100G SR4 光模块主要采用COB 封装技术,在光电芯片键合(bonding)阶段,首先使用银胶将光芯片、电芯片精准固定在电路板规定位置上,该工序即为元件键合(die bonding);然后采用打线机进行金线键合(wire bonding),完成光模块内部的电气连接。在光路耦合阶段,采用8路阵列透镜组完成光路90°弯折及聚焦,并采用有源耦合的工艺进行光路的最终确认,该设计方案工艺简单、高效,借助全自动贴片机、打线机和耦合台就可实现100G SR4 光模块的大批量生产。

Flyin_Group的博客 1372

Python 的 f-strings,远比你想象的强大!

r}')MyClass()Python 的 f-string 非常灵活优雅,同时还是效率最高的字符串拼接方式:以后关于字符串的格式化,就 f-string 了。

WANGJUNAIJIAO的博客 1912

AI应用安全 - Prompt注入攻击

随着大模型的爆火,各行各业都在使用大模型进行智能化改造。但是如何做一个可靠的大模型应用,就需要考虑各种安全问题。本文主要介绍一种常见的安全问题,即prompt注入攻击,并介绍一些防范手段。Prompt Injection Attack(提示注入攻击)是针对大型语言模型(LLM)的一种新兴安全威胁,攻击者通过精心构造的输入提示(prompt)来操纵模型行为,使其产生非预期输出或执行恶意操作。它主要包括两种注入方式,一是直接注入,而是间接注入。

sinat_28694519的博客 1932

Python f-string字符串格式化的介绍

从 Python 3.6 开始,f-strings 是一种很好的格式化字符串的新方法。它们不仅比其他格式化方式更易读、更简洁、更不容易出错,而且速度也更快! 在本文结束时,您将了解如何以及为什么从今天开始使用 f-string。 Python f-string字符串格式化的介绍 Python 中的“老派”字符串格式 在 Python 3.6 之前,有两种主要方法可

Xingze_Li 4728

EDA环境下的LSF进阶调优:如何为Cadence/VCS等工具正确配置cgroups与daemon starter

本文深入探讨了在EDA环境中如何为Cadence/VCS等工具正确配置LSF的cgroups与daemon starter,解决资源分配与特殊应用兼容性问题。通过详细解析cgroups技术、daemon starter配置及混合资源管理策略,帮助提升LSF集群的效率和稳定性,特别适用于高性能计算和芯片设计场景。

weixin_33724046的博客 461

[Ethernet in CANoe]3--CANoe工程中SOME/IP报文的详细介绍(一)

和上述第一章节的介绍,我们对SOEMIP通信协议有了初步了解,首先我们先暂停Trace窗口,可以看到整个Trace窗口关于SOMEIP的报文有两种颜色,一种是紫色,另一种是绿色。它使用多播地址,允许服务提供者发布其服务,服务消费者订阅这些服务。上述每点开一个SOMEIP报文,左侧的details就能看到该报文中的具体细节,从IP地址到port口,再到具体的serviceID,都能详细的解析。一旦通过服务发现完成了服务的发布和订阅,服务消费者就可以向服务提供者发送请求,或者服务提供者向消费者发送事件通知。

汽车ECU自动化测试 1411

FactoryBluePrints|戴森球计划工厂蓝图库:导入即用

戴森球计划玩到中后期,找一张靠谱产线蓝图往往比调平衡还费劲:作者散落在各处、版本还随时失效。FactoryBluePrints 是个戴森球计划工厂蓝图仓库,按功能把社区贡献的数千张产线蓝图分好类,连 Git 自动更新脚本都替你打包好了,拖进游戏目录就能用。 ## 📦 第一次导入时:Release 包进游戏目录 ### 下载与放置:只认 Release 包 从仓库 Releases 页下载完

gitblog_00127的博客 850

React项目实战:用AntV G6打造可折叠组织架构图(附完整代码)

本文详细介绍了如何在React项目中使用AntV G6库构建一个功能完整的可折叠组织架构图。通过实战代码演示了从环境搭建、自定义节点、折叠状态管理到性能优化的全流程,重点解决了企业级应用中处理复杂树形数据、实现流畅交互等核心问题,并提供了可直接复用的组件代码。

weixin_29016315的博客 312

《Effective Python》第2章 字符串和切片操作——Python 字符串格式化的现代选择f-strings

本文探讨了 Python 字符串格式化的演进,重点介绍了 f-strings 的优势与应用。从早期的 C 风格格式化到 str.format,再到 f-strings,字符串格式化方式不断优化。f-strings 以其简洁、高效和灵活的特性成为现代 Python 开发的首选,支持动态表达式和精细的格式控制,适用于日志记录、数据报表和模板化等场景。尽管 f-strings 功能强大,但应避免滥用复杂表达式,以保持代码的可读性和性能。

企业级后端与 AI 应用开发双线探索 1369

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python f-strings 格式化

在python3.6之后引入了 f-strings在以后格式化输出的时候可以使用 如下一些方法达到使用format 或是 % 实现的功能: 和format用法比: 通过位置 data = ['data1', 'data2'] # format print("data1: {0}, data2: {1}".format(*data)) # f-strings print(f"d...

sdhmlsq的专栏 285

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python3.6的新特性:f-strings格式化输出;python3.8新特性:f-strings增加了 = 说明符

f-strings 是python3.6开始加入标准库的格式化输出新的写法,这个格式化输出比之前的%s 或者 format 效率高并且更加简化,非常的好用,以后再用格式化输出选它绝对没有错。 简单使用 name = '123' # format() print('name={}'.format(name)) # % print('name=%s' % name) # f-...

h18208975507的博客 2199

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Python入门教程】第77篇 格式化字符串F-strings

Python f-strings 提供了一种格式化字符串的简洁方式。Python 在运行时替换 f-strings 大括号中的表达式结果。

Tony.Dong的专栏 890

实用!f-strings 比你想象的还要强大

【导语】:本文介绍了“格式化字符串常量”f-strings一些不常见的特性,包括:格式化日期和时间、同时打印变量名和变量值等,嵌套使用f-strings等,此外与其他格式化字符串的方法相比,f-strings的速度更快,因此,学习这些新特性有助于开发者更好地处理字符串。简介f-strings,也称为格式化字符串常量(formatted string literals),是...

Python开发者 855

Python中格式化字符串输出的4种方式

**Python格式化字符串的4中方式** 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景'

Python编程学习的博客 9355

Python f-strings - PEP 498 - 字面字符串插值

Python f-strings 或格式化字符串是格式化字符串的新方法。此功能是在 Python 3.6 中引入的,属于 PEP-498。它也被称为。

rubys_的专栏 1405

Python 3.12新功能(3)- 增强的格式化字符串f-strings

对于f-strings,小伙伴们不会感到陌生。它又称为格式化字符串,是早在Python3.6中就加入的功能。那么在Python 3.12中又添加了哪些能力呢?

Bruce 1052

Python3.8 新特性:f-strings调试

f-strings调试 这是Python3.8新特性的第三篇,第一篇介绍了Python3.8 新特性:赋值表达式,第二篇是Python3.8 新特性:仅位置参数。这篇文章介绍f-strings调试功能。 f-strings 是Python3.6中的新特性,Python3.8 中 f-strings 开始支持“=”操作,主要作用是方便用于调试...

xiaoyaGrace的博客 517

python3更高级的字符串操作库-f_Strings

python 3.6+版本支持 在python 3.6 版本之前,python提供了如%-formatting、str.format()、string.Template等方法对字符串进行格式化。每种格式化方法都有各自的优缺点,而f-strings则提供了新的字符串格式化机制:文字字符串插值。 注:f-strings,并没有替代原有的格式化方法。 # 基本用法 name = 'xiaoming' age = 18 f'{name}今年{age}岁了.' # 'xiaoming今年18岁了.' F'{na.

Amio_的博客 570

Python F-Strings:AI如何帮你写出更优雅的字符串格式化代码

原本以为要折腾Flask或Django,结果发现只要代码里有持续运行的服务逻辑(比如用FastAPI暴露接口),点个按钮就能生成可分享的访问链接,客户打开就能看到实时生成的价格报表,连服务器配置都省了。总结下来,f-strings配合AI辅助有三大优势:一是语法学习成本大幅降低,二是代码整洁度显著提升,三是复杂格式能快速验证。的AI辅助功能实践时,发现它对快速掌握f-strings的高级特性特别有帮助——不用死记语法,直接对话就能生成理想代码结构。这个冷知识是AI在生成示例代码时自动处理的,看到。

ObsidianRaven13的博客 381

百万年薪python之路 -- f-strings 格式化

f-strings 是python3.6开始加入标准库的格式化输出新的写法,这个格式化输出比之前的%s 或者 format 效率高并且更加简化,非常的好用. 2.1 简单举例 他的结构就是F(f)+ str的形式,在字符串中想替换的位置用{}占位,与format类似,但是用在字符串后面写入替换的内容,而他可以直接识别。 name = '章超印' age = 17 sex = '男' ms...

banjiao2904的博客 187
上一篇: 实用的(named tuple)命名元组
下一篇: Python标准库itertools模块
itanders
博客等级 码龄19年 178粉丝 177原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值