python3.6 f-string的高级用法
2024-2-4
| 2024-3-1
0  |  阅读时长 0 分钟
tags
type
status
date
slug
summary
category
password
icon
😀
从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在后文中f-string被称为F字符串。

📝 主旨内容

在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formattingstr.format()
从Python 3.6开始,增加了F字符串方法,F字符串方法与其他两种方法相比,是格式化字符串的一种很好的新方法。
先说下%-formattingstr.format() 的使用,以及它们的局限性。

1️⃣ %-formatting 方法

%-formatting是Python格式化的OG(original generation),使用上可能会遇到很多问题,如无法正确显示元组和字典。
如果需要使用的参数过多,代码就变得不易阅读了,甚至感觉凌乱。并且这种方式不支持元组或字典。

2️⃣ str.format() 方法

str.format() 方法是python2.6引入的,是对%-formatting方法的改进。它使用正常的函数调用语法,并且可以通过对要转换为字符串的对象的__format __()方法进行扩展。
默认规则是顺序索引嵌入字符串,也可以通过索引改变嵌入字符串的次序。
将索引改为变量名也是可以的,但必须在format()引用参数。
如果采用字典定义,则可以通过**来实现参数引用。

3️⃣ f-string 方法

f-string 方法也可以称为格式化字符串,F字符串是开头有一个f的字符串文字,以及包含表达式的大括号将被其值替换。表达式在运行时进行渲染,然后使用__format__协议进行格式化。
语法与str.format()使用的语法类似,但不需要结尾补充.format()
f 改为 F 也是生效的。
由于f字符串是在运行时进行渲染的,因此可以将任何有效的Python表达式放入其中。如计算、函数调用,甚至可以创建对象。
__str __()__repr __()方法处理对象如何呈现为字符串,因此您需要确保在类定义中包含至少一个这些方法。如果必须选择一个,请使用__repr __(),因为它可以代替__str __()
__str __()返回的字符串是对象的非正式字符串表示,应该可读。 __repr __()返回的字符串是官方表示,应该是明确的。调用str()repr()比直接使用__str __()__repr __()更好。
默认情况下,f字符串将使用__str __(),但如果包含转换标志!r,则可以确保它们使用__repr __()
多行文字可以使用 """
在使用F字符串需要注意: 1.如果在字典键周围使用与在F字符串外部使用相同类型的引号,则第一个字典键开头的引号将被解释为字符串的结尾。 2.如果字符串本身有大括号,为了使字符串出现大括号,必须使用双大括号。 3.F字符串可以使用反斜杠转义符,但是不能在F字符串的表达式部分中使用。 4.lambda表达式,如果! : } 不在括号中,会被解释为表达式结尾,需要在 () 中定义lambda表达式。
 

f-string的使用技巧

 

f-string填充

 
填充分为左填充、右填充、居中填充。
左填充表示在字符串左侧填充,右填充表示在字符串右侧填充,居中填充表示在字符串左右两侧对称填充。
  • >表示左填充
  • <表示右填充
  • ^表示居中填充。
记忆方法:括号口朝左边,就表示左填充;括号口朝右边,就表示右填充。
 

f-string保留小数位数 f"{num:xxx}"

其中xxx的格式如下
格式
说明
width
整数width指定宽度
0width
整数width指定宽度,0表示最高位用0补足宽度
width.precision
整数width指定宽度,整数precision表示精度(保留小数点后几位小数)

f-string进制转换

还可以用数字进行进制转换,如:十六进制转换、二进制转换、八进制转换、科学计数法等

f-string千位符分隔符、百分比

千位符分隔符和百分比也可以很简单的实现。
:.2%即为设置保留 2 位小数并在字符串末尾添加一个百分号,且会自动根据保留小数位进行四舍五入。

f-string调试模式 {variable = }

你仔细观察下上面的例子,是不是发现语法书写变化了,这种写法就是f-string调试模式。
f-string 的调试功能是另一种书写语法,即使用 {variable = } 代替 variable = {},如下面代码所示。
可以看到使用调试模式减少了代码量,同时输出的内容是一致的。由此可见调试模式可以节省大量时间和精力,使代码看起来更整洁。
在 f-string 的调试模式中,还可以执行数学运算。
 

f-string日期格式化

如果想格式化日期,可以创建一个示例日期时间值。就像在应用程序中格式化日期一样,可以在 f-string 中定义你想要的格式,例如:<date_format>
 
GitHub Action 定时任务执行时区处理java-decompiler 反编译工具
目录