首页 > Python资料 博客日记
python fstring教程(f-string教程)(python3.6+格式化字符串方法)(%惰性格式化%)
2024-08-22 09:00:05Python资料围观144次
文章目录
Python F-String 教程:深度探究与实用指南
引言
在Python 3.6及以上版本中,引入了一种新的字符串格式化方法,被称为“格式化字符串字面值”(f-string)。这种方法通过在字符串前加上字母f
或F
来实现,使得字符串内部可以直接嵌入表达式。这种技术不仅提高了代码的可读性,还提升了运行时的效率。本教程将全面解析f-string的用法,探讨其与传统格式化方法的比较,并提供多种实用示例。
基础用法
什么是F-String?
F-string,全名为Formatted String Literals,通过在字符串前添加f
或F
,使得字符串能够包含Python表达式的值。这些表达式被大括号{}
包围,并在运行时计算,其结果直接插入到字符串中。
name = "世界"
message = f"你好,{name}!"
print(message) # 输出: 你好,世界!
表达式嵌入
F-string最大的优点之一是可以在字符串中直接嵌入并计算表达式,这包括算术运算、函数调用等。
a = 5
b = 10
print(f"五加十等于{a + b}") # 输出: 五加十等于15
格式化选项
F-string不仅能嵌入表达式,还可以指定格式化选项,如设置小数点精度、填充、对齐方式等。
小数点精度
对于浮点数,可以指定小数的精度。
import math
print(f"圆周率是{math.pi:.3f}") # 输出: 圆周率是3.142(保留三位小数)
宽度与对齐
可以设置字符串的宽度,并指定左对齐、右对齐或居中对齐。
name = "Alice"
print(f"{name:*>10}") # 输出: *****Alice
在Python的f-string中,
print(f"{name:*>10}")
这段代码用来格式化字符串,并且具体做了以下几件事情:
- 设置宽度:
10
表示目标字符串的总宽度应为10个字符。- 对齐方式:使用
>
表示如果目标字符串长度小于10,那么将字符串向右对齐。- 填充字符:
*
用作填充字符,意味着在左侧填充*
,直到整个字符串的长度达到10个字符。举个例子,假设
name
的值为"Alice"
,那么:
python name = "Alice" print(f"{name:*>10}") # 输出: *****Alice
这里
"Alice"
只有5个字符,按照指定的10个字符的宽度,左侧将用5个*
填充,使总长度达到10字符,从而实现右对齐的效果。这种格式化在需要在控制台输出整齐的表格或者对齐的文本时非常有用。
数字格式化
对于数字,可以进行各种格式化,如千位分隔符等。
number = 1234567890
print(f"{number:,}") # 输出: 1,234,567,890
高级用法
复杂表达式
F-string可以包含复杂的表达式,包括调用方法或处理数据结构。
data = [1, 2, 3, 4, 5]
print(f"数据平均值是{sum(data)/len(data)}") # 输出: 数据平均值是3.0
调用函数
可以在f-string中直接调用函数,使得字符串的生成更加动态。
def greet(name):
return f"你好,{name}!"
print(greet("世界")) # 输出: 你好,世界!
多行F-String
当处理较长的f-string时,可以使用三引号来定义多行字符串,增加代码的可读性。
name = "世界"
profession = "工程师"
language = "Python"
message = f"""
姓名:{name}
职业:{profession}
语言:{language}
"""
print(message)
嵌套格式化
将fstring置入格式说明符中:
places = 3
number = 1.23456
# 保留三位小数
print(f'My number is {number:.{places}f}')
总结
通过本教程,我们深入了解了Python中f-string的强大功能。通过实用的示例和详细的解释,我们展示了如何有效地使用f-string来简化代码并提高性能。无论是简单的数据展示还是复杂的数据处理,f-string都是一种高效且直观的解决方案。
20240708 注意在使用python logging日志模块时,建议使用%惰性格式化
,不建议使用f-string
Pylint 提示 W1203: logging-fstring-interpolation
是因为在使用 logging
模块时,推荐使用惰性 %
格式化而不是 f-string 格式化。这是因为使用惰性 %
格式化能够在日志级别低于当前设置的情况下避免不必要的字符串格式化操作,从而提高性能。
在 logging
模块中,如果你使用 f-string 进行字符串插值,即使日志消息最终不会被记录,字符串插值操作仍然会发生。这可能会导致性能问题,特别是在大量日志记录的情况下。相反,使用 %
格式化字符串时,格式化操作只有在日志消息实际被记录时才会发生。
以下是一个使用惰性 %
格式化的例子:
import logging
# 配置日志记录
logging.basicConfig(level=logging.DEBUG)
variable = 'world'
logging.debug('Hello, %s', variable)
在这个例子中,'Hello, %s'
是日志消息模板,variable
是插值的变量。只有在日志级别设置为 DEBUG
或更高级别时,variable
的值才会被插入到消息模板中。
下面是同样的逻辑,但使用 f-string(不推荐的方式):
import logging
# 配置日志记录
logging.basicConfig(level=logging.DEBUG)
variable = 'world'
logging.debug(f'Hello, {variable}')
在这种情况下,即使日志级别低于 DEBUG
,f-string 插值也会执行,这会导致不必要的性能开销。
总之,为了遵循最佳实践并避免 Pylint 警告,应该在 logging
调用中使用惰性 %
格式化字符串。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj