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

Python中f - 字符串(f-string)

在 Python 中,f - 字符串(f-string) 是一种简洁高效的字符串格式化方法,于 Python 3.6 引入。

f-string 基本语法

fF 为前缀的字符串,使用 {表达式} 嵌入变量或计算内容:

name = "Python"
version = 3.11
print(f"我正在学习 {name} {version} 版本")  # 输出:我正在学习 Python 3.11 版本

直接嵌入变量

将变量值直接插入字符串:

age = 25
score = 95.5
print(f"年龄:{age},分数:{score}")  # 输出:年龄:25,分数:95.5

支持表达式计算

{} 内可直接写入运算表达式,自动计算结果:

a = 10
b = 3
print(f"{a} + {b} = {a + b}")       # 输出:10 + 3 = 13
print(f"{a} 的平方是 {a **2}")      # 输出:10 的平方是 100
print(f"是否偶数:{a % 2 == 0}")    # 输出:是否偶数:True

调用函数或方法

{} 中支持直接调用函数或对象方法:

def get_greeting():return "Hello"text = "hello world"
print(f"{get_greeting()}! {text.upper()}")  # 输出:Hello! HELLO WORLD

格式化数值与日期

通过 {表达式:格式说明符} 控制输出格式:

pi = 3.1415926
print(f"π ≈ {pi:.2f}")  # 输出:π ≈ 3.14from datetime import datetime
now = datetime(2025, 8, 17, 15, 30)
print(f"当前日期:{now:%Y年%m月%d日}")  # 输出:当前日期:2025年08月17日
print(f"当前时间:{now:%H:%M:%S}")     # 输出:当前时间:15:30:00

处理引号冲突

混合使用单双引号避免语法冲突:

name = "Alice"
print(f'她的名字是 "{name}"')  # 输出:她的名字是 "Alice"
print(f"他说: '我叫{name}'")   # 输出:他说: '我叫Alice'

嵌套访问复杂结构

直接访问字典、列表等嵌套数据:

user = {"name": "Bob", "info": {"age": 30, "city": "Beijing"}}
print(f"姓名:{user['name']},年龄:{user['info']['age']}")  # 输出:姓名:Bob,年龄:30

注意事项

  1. 必须添加 fF 前缀
    缺少前缀时 {} 会被当作普通文本处理。

  2. 表达式内不能直接使用反斜杠 \
    需提前定义转义字符变量:

    newline = "\n"
    print(f"换行符:{newline}结束")
    
  3. 性能优势
    f-string 在编译时解析,效率高于 % 格式化和 str.format()

http://www.xdnf.cn/news/18228.html

相关文章:

  • Hadoop入门
  • 前端基础知识版本控制系列 - 05( Git 中 HEAD、工作树和索引之间的区别)
  • 图论水题4
  • 写作路上的迷茫与突破
  • java_spring boot 中使用 log4j2 及 自定义layout设置示例
  • NestJS 手动集成TypeORM
  • 关于第一次接触Linux TCP/IP网络相关项目
  • Docker入门:容器化技术的第一堂课
  • python---装饰器
  • 在线编程题目之小试牛刀
  • [每周一更]-(第155期):Go 1.25 发布:新特性、技术思考与 Go vs Rust 竞争格局分析
  • 回溯剪枝的 “减法艺术”:化解超时危机的 “救命稻草”(一)
  • 机器学习算法篇(十三)------词向量转化的算法思想详解与基于词向量转换的文本数据处理的好评差评分类实战(NPL基础实战)
  • 微服务之间的调用需要走网关么?
  • Linux Shell定时检查日期执行Python脚本
  • Python数据类型转换详解:从基础到实践
  • uniappx 安卓端本地打包的一些总结
  • 【typenum】 16 非零标记及改进建议
  • 【Linux系统】动静态库的制作
  • java之 junit4单元测试Mockito的使用
  • Pycharm Debug详解
  • 深度学习之优化器
  • 数据与模型融合波士顿房价回归建模预测
  • 数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
  • LeetCode 1323: 6和9组成的最大数字
  • 内网后渗透攻击--隐藏通信隧道技术(应用层隧道技术)
  • 一键管理 StarRocks:简化集群的启动、停止与状态查看
  • JAVA后端开发——Token自动续期机制的必要性
  • 库制作与原理(下)
  • RabbitMQ面试精讲 Day 24:消费者限流与批量处理