当前位置: 首页 > news >正文

python中f-string详解

在 Python 3.6 及以上版本中引入的 f-string(格式化字符串字面值)是一种简洁、高效的字符串格式化方式,相比传统的 % 格式化和 str.format() 方法,它更直观且性能更好。

一、基本语法

f-string 以 f 或 F 为前缀,字符串中通过 {}(花括号)包裹变量或表达式,Python 会自动计算并替换为对应的值。

name = "Alice"
age = 30# 基本用法:直接嵌入变量
print(f"姓名:{name},年龄:{age}")  # 输出:姓名:Alice,年龄:30# 大小写前缀均可
print(F"姓名:{name},年龄:{age}")  # 输出同上

二、核心特性

1. 直接嵌入表达式

f-string 支持在 {} 中写入任意 Python 表达式,包括算术运算、函数调用、三目运算等,Python 会实时计算结果并格式化。

x = 10
y = 20# 算术运算
print(f"{x} + {y} = {x + y}")  # 输出:10 + 20 = 30# 函数调用
def greet(name):return f"Hello, {name}!"
print(f"问候:{greet('Bob')}")  # 输出:问候:Hello, Bob!# 三目运算
print(f"结果:{x if x > y else y}")  # 输出:结果:20
2. 嵌套使用

f-string 可以嵌套,即 {} 中可以包含另一个 f-string 或格式化表达式。

user = {"name": "Charlie", "age": 25}
print(f"用户信息:{f'姓名:{user["name"]},年龄:{user["age"]}'}")
# 输出:用户信息:姓名:Charlie,年龄:25
3. 转义字符
  • 若需在字符串中显示 { 或 },需用双写的 {{ 或 }} 转义。
  • 其他转义字符(如 \n\t)仍按常规方式使用。
price = 99.9
print(f"价格:{{{price}}} 元")  # 输出:价格:{99.9} 元
print(f"第一行\n第二行")  # 输出两行文本(带换行)
4. 格式化控制

通过在 {} 中添加 : 后缀,可以指定数值精度、对齐方式、类型转换等格式化规则,语法与 str.format() 一致。

num = 123.456789# 控制小数位数(保留2位)
print(f"数值:{num:.2f}")  # 输出:数值:123.46# 整数补零(总长度5位,不足补零)
print(f"编号:{12:05d}")  # 输出:编号:00012# 百分比格式(乘以100并显示%)
print(f"百分比:{0.75:.0%}")  # 输出:百分比:75%# 对齐方式(左对齐,总长度10位)
print(f"左对齐:{name:<10}结束")  # 输出:左对齐:Alice     结束
5. 变量名和表达式的字符串表示

使用 !r 可以获取变量或表达式的 repr() 结果(带引号的字符串表示),!s 则获取 str() 结果(默认行为)。

text = "hello"
print(f"str: {text!s}, repr: {text!r}")
# 输出:str: hello, repr: 'hello'

三、优势总结

  1. 简洁直观:变量直接嵌入字符串,无需像 % 或 str.format() 那样维护占位符与变量的对应关系。

    # 对比传统方式
    print("姓名:%s,年龄:%d" % (name, age))  # %格式化
    print("姓名:{},年龄:{}".format(name, age))  # str.format()
    print(f"姓名:{name},年龄:{age}")  # f-string(最简洁)
    
  2. 性能更好:f-string 在编译时解析,比 str.format() 执行速度更快。

  3. 功能强大:支持所有 Python 表达式,无需额外拼接字符串。

四、注意事项

  • 引号冲突:若表达式中包含与外层相同的引号,需用不同类型的引号(如外层用双引号,内层用单引号)。

    print(f'姓名:{name},句子:"Hello"')  # 正确
    
  • 不能包含反斜杠{} 中的表达式不能直接包含反斜杠,需提前定义变量。

    # 错误写法
    # print(f"路径:{C:\Users}")# 正确写法
    path = r"C:\Users"
    print(f"路径:{path}")
    
  • 版本限制:仅 Python 3.6+ 支持,低版本需使用其他格式化方式。

f-string 是 Python 中推荐的字符串格式化方式,尤其适合需要动态拼接变量或表达式的场景,既提高了代码可读性,又保证了性能。

http://www.dtcms.com/a/461026.html

相关文章:

  • C++网络编程(十三)epoll如何设置边缘模式
  • 一流的高端企业网站网站建设与维护是什么意思
  • 上海做响应式网站的公司做后台系统的网站
  • 服务端与客户端的简单链接
  • Ubuntu24.04系统安装图形化桌面并使用xrdp远程桌面
  • 无人机通信链路技术要点与难点
  • 计算机二级45天通关秘籍:高效备考策略与编程语言选择指南​
  • 测试基础01
  • 东莞住建局官网网站宁波网站建站
  • 网上的彩票网站是怎么做的网站建设基本问题
  • 微信小程序执行onPullDownRefresh 之后 下拉刷新后刷新标志不消失
  • 如何在网站后台备份数据库表台州智能模板建站
  • 寻梦数据空间 | 起源篇:从数据孤岛到互联新范式的战略演进
  • Bug、Bag、Buff 到底是什么意思?一篇看懂程序员的游戏黑话
  • 攻防世界-Web-easyphp
  • js移动端开发面试题
  • LoRaWAN NS 对比分析
  • php网站开发项目实战周易起名网唯一官网免费
  • PyCharm入门级详细使用手册(Python新手快速上手篇)
  • 建一个网站大约花多少钱一键生成app制作器
  • Qt C++ :XML文件处理工具 <QXml>模块
  • 门诊场景评测深度分析报告:医生-病人-测量代理交互对诊断影响机制研究(上)
  • 海康威视 2DC 系列球机手机直连实用教程
  • MyBatis Mapper XML 核心详解
  • 加强局网站建设网站建设域名多少钱
  • 记录最新 Neo4j 安装过程(截图实操)、使用、踩坑 Neo4j 5.26.13、JDK 17安装
  • JavaWeb项目部署到Tomcat的三种方法
  • MyBatis配置全解析:核心要点详解
  • apache-tomcat 安装部署
  • 如何为卫生中心构建安全高效的网络系统?