找回密码
 会员注册
查看: 32|回复: 0

pythonfstring教程(f-string教程)(python3.6+格式化字符串方法)(%惰性格式化%)

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
67432
发表于 2024-9-4 20:51:26 | 显示全部楼层 |阅读模式
文章目录PythonF-String教程:深度探究与实用指南引言基础用法什么是F-String?表达式嵌入格式化选项小数点精度宽度与对齐数字格式化高级用法复杂表达式调用函数多行F-String嵌套格式化总结20240708注意在使用pythonlogging日志模块时,建议使用`%惰性格式化`,不建议使用`f-string`PythonF-String教程:深度探究与实用指南引言在Python3.6及以上版本中,引入了一种新的字符串格式化方法,被称为“格式化字符串字面值”(f-string)。这种方法通过在字符串前加上字母f或F来实现,使得字符串内部可以直接嵌入表达式。这种技术不仅提高了代码的可读性,还提升了运行时的效率。本教程将全面解析f-string的用法,探讨其与传统格式化方法的比较,并提供多种实用示例。基础用法什么是F-String?F-string,全名为FormattedStringLiterals,通过在字符串前添加f或F,使得字符串能够包含Python表达式的值。这些表达式被大括号{}包围,并在运行时计算,其结果直接插入到字符串中。name="世界"message=f"你好,{name}!"print(message)#输出:你好,世界!123表达式嵌入F-string最大的优点之一是可以在字符串中直接嵌入并计算表达式,这包括算术运算、函数调用等。a=5b=10print(f"五加十等于{a+b}")#输出:五加十等于15123格式化选项F-string不仅能嵌入表达式,还可以指定格式化选项,如设置小数点精度、填充、对齐方式等。小数点精度对于浮点数,可以指定小数的精度。importmathprint(f"圆周率是{math.pi:.3f}")#输出:圆周率是3.142(保留三位小数)12宽度与对齐可以设置字符串的宽度,并指定左对齐、右对齐或居中对齐。name="Alice"print(f"{name:*>10}")#输出:*****Alice12在Python的f-string中,print(f"{name:*>10}")这段代码用来格式化字符串,并且具体做了以下几件事情:设置宽度:10表示目标字符串的总宽度应为10个字符。对齐方式:使用>表示如果目标字符串长度小于10,那么将字符串向右对齐。填充字符:*用作填充字符,意味着在左侧填充*,直到整个字符串的长度达到10个字符。举个例子,假设name的值为"Alice",那么:pythonname="Alice"print(f"{name:*>10}")#输出:*****Alice这里"Alice"只有5个字符,按照指定的10个字符的宽度,左侧将用5个*填充,使总长度达到10字符,从而实现右对齐的效果。这种格式化在需要在控制台输出整齐的表格或者对齐的文本时非常有用。数字格式化对于数字,可以进行各种格式化,如千位分隔符等。number=1234567890print(f"{number:,}")#输出:1,234,567,89012高级用法复杂表达式F-string可以包含复杂的表达式,包括调用方法或处理数据结构。data=[1,2,3,4,5]print(f"数据平均值是{sum(data)/len(data)}")#输出:数据平均值是3.012调用函数可以在f-string中直接调用函数,使得字符串的生成更加动态。defgreet(name):returnf"你好,{name}!"print(greet("世界"))#输出:你好,世界!1234多行F-String当处理较长的f-string时,可以使用三引号来定义多行字符串,增加代码的可读性。name="世界"profession="工程师"language="Python"message=f"""姓名:{name}职业:{profession}语言:{language}"""print(message)123456789嵌套格式化将fstring置入格式说明符中:places=3number=1.23456#保留三位小数print(f'Mynumberis{number:.{places}f}')1234总结通过本教程,我们深入了解了Python中f-string的强大功能。通过实用的示例和详细的解释,我们展示了如何有效地使用f-string来简化代码并提高性能。无论是简单的数据展示还是复杂的数据处理,f-string都是一种高效且直观的解决方案。20240708注意在使用pythonlogging日志模块时,建议使用%惰性格式化,不建议使用f-stringPylint提示W1203:logging-fstring-interpolation是因为在使用logging模块时,推荐使用惰性%格式化而不是f-string格式化。这是因为使用惰性%格式化能够在日志级别低于当前设置的情况下避免不必要的字符串格式化操作,从而提高性能。在logging模块中,如果你使用f-string进行字符串插值,即使日志消息最终不会被记录,字符串插值操作仍然会发生。这可能会导致性能问题,特别是在大量日志记录的情况下。相反,使用%格式化字符串时,格式化操作只有在日志消息实际被记录时才会发生。以下是一个使用惰性%格式化的例子:importlogging#配置日志记录logging.basicConfig(level=logging.DEBUG)variable='world'logging.debug('Hello,%s',variable)1234567在这个例子中,'Hello,%s'是日志消息模板,variable是插值的变量。只有在日志级别设置为DEBUG或更高级别时,variable的值才会被插入到消息模板中。下面是同样的逻辑,但使用f-string(不推荐的方式):importlogging#配置日志记录logging.basicConfig(level=logging.DEBUG)variable='world'logging.debug(f'Hello,{variable}')1234567在这种情况下,即使日志级别低于DEBUG,f-string插值也会执行,这会导致不必要的性能开销。总之,为了遵循最佳实践并避免Pylint警告,应该在logging调用中使用惰性%格式化字符串。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 00:55 , Processed in 0.455628 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表