文章目录Python 字符串格式化f-string 用法 ✨什么是 f-string 基本用法 嵌入变量执行表达式调用函数或方法高级格式化技巧 ️数字格式化对齐与填充日期时间格式化特殊字符与转义 f-string 与性能 ⚡应用场景示例 生成报告或日志消息动态生成 SQL 查询注意实际中应使用参数化查询防注入生成 JSON 或 HTML 内容与其他格式化方法对比 注意事项 ⚠️延伸学习资源 结语 Python 字符串格式化f-string 用法 ✨在 Python 的字符串格式化演进历程中f-string格式化字符串字面量自 Python 3.6 引入以来凭借其简洁、高效和强大的功能迅速成为开发者的首选。它不仅让代码更易读还大幅提升了字符串格式化的灵活性和性能。本文将深入探讨 f-string 的用法辅以丰富的代码示例、可视化图表和相关资源链接助你全面掌握这一实用特性。什么是 f-string f-string 是 Python 中一种内置的字符串格式化机制通过在字符串前加前缀f或F并在字符串内部使用大括号{}嵌入表达式或变量实现动态内容插入。例如nameAliceage30print(fHello,{name}. You are{age}years old.)# 输出: Hello, Alice. You are 30 years old.与传统的%格式化或str.format()方法相比f-string 语法更简洁直观且执行速度更快因为它在运行时直接求值并嵌入结果无需额外函数调用。基本用法 f-string 的核心是在字符串中直接引用变量或表达式。以下是一些常见用法嵌入变量itembookprice19.99print(fThe{item}costs ${price}.)# 输出: The book costs $19.99.执行表达式你可以在{}内放置任意有效表达式x,y5,3print(f{x}times{y}is{x*y}.)# 输出: 5 times 3 is 15.调用函数或方法defgreet(name):returnfHello,{name}!userBobprint(f{greet(user)}How are you?)# 输出: Hello, Bob! How are you?高级格式化技巧 ️f-string 支持丰富的格式化选项如控制数字精度、对齐、日期格式等类似于str.format()的规范。数字格式化使用:后跟格式说明符来调整输出pi3.14159265print(fPi rounded:{pi:.2f})# 保留两位小数# 输出: Pi rounded: 3.14number1234567890print(fWith commas:{number:,})# 千位分隔符# 输出: With commas: 1,234,567,890percent0.875print(fPercentage:{percent:.1%})# 百分比格式# 输出: Percentage: 87.5%对齐与填充指定宽度和对齐方式左对齐右对齐^居中textPythonprint(f{text:10})# 右对齐宽度10# 输出: Pythonprint(f{text:*^10})# 居中宽度10用*填充# 输出: **Python**日期时间格式化结合datetime模块fromdatetimeimportdatetime nowdatetime.now()print(fCurrent time:{now:%Y-%m-%d%H:%M:%S})# 输出: Current time: 2023-10-05 14:30:25特殊字符与转义 如果需要在 f-string 中包含字面量{或}使用双大括号转义print(f{{This is in braces}})# 输出: {This is in braces}对于包含引号的字符串灵活运用单双引号避免冲突valuedataprint(fHe said, The value is{value})# 输出: He said, The value is dataf-string 与性能 ⚡f-string 在运行时直接解析比%格式化和str.format()更高效。以下是一个简单对比# 使用 timeit 粗略比较示例代码importtimeit setup name World t1timeit.timeit(fHello, {name},setupsetup,number1000000)t2timeit.timeit(Hello, {}.format(name),setupsetup,number1000000)t3timeit.timeit(Hello, %s % name,setupsetup,number1000000)print(ff-string:{t1:.3f}s)print(fstr.format:{t2:.3f}s)print(f% formatting:{t3:.3f}s)通常f-string 会显示更快的执行时间尤其在复杂格式化场景中优势明显。应用场景示例 生成报告或日志消息userCharlieactionlogintimestamp2023-10-05 14:35:10print(f[{timestamp}] User {user} attempted to{action}.)# 输出: [2023-10-05 14:35:10] User Charlie attempted to login.动态生成 SQL 查询注意实际中应使用参数化查询防注入tableusersfieldnamevalueJohnqueryfSELECT * FROM{table}WHERE{field} {value}print(query)# 输出: SELECT * FROM users WHERE name John生成 JSON 或 HTML 内容data{title:Blog Post,views:1500}html_snippetfdivh1{data[title]}/h1pViews:{data[views]}/p/divprint(html_snippet)# 输出: divh1Blog Post/h1pViews: 1500/p/div与其他格式化方法对比 为了更直观展示 f-string 的优势以下是一个功能对比图表使用 mermaid 绘制% formattingstr.format()f-string低可读性高可读性低性能高性能Python 字符串格式化方法对比该图表从可读性和性能两个维度对比了主要方法可见 f-string 综合表现最佳。注意事项 ⚠️Python 版本要求f-string 仅适用于 Python 3.6 及以上版本。复杂表达式虽然支持表达式但过度复杂会影响可读性建议将复杂逻辑放在外部计算。安全注意避免将用户输入直接嵌入 f-string 生成代码如 SQL以防注入攻击。延伸学习资源 官方文档Python 的 f-string 语法说明Real Python 教程Python 3’s f-Strings需科学访问进阶技巧PyMOTW 关于 format 的详解需科学访问结语 f-string 以其简洁、高效和强大功能已成为现代 Python 开发中字符串格式化的不二之选。通过本文的介绍和示例希望你能在项目中灵活运用它提升代码质量和开发效率。如有疑问或更多技巧分享欢迎在评论区交流Happy Coding!