这些f-string的用法,90%的Pythoner不知道

这些f-string的用法,90%的Pythoner不知道
最新回答
带翅膀的吸血鬼

2021-02-23 14:54:20

f-string 是 Python3.6 版本开始引入的特性,通过它我们可以更加方便地向字符串中嵌入自定义内容,但 f-string 真正蕴含的功能远比大多数用户知道的要丰富,下面介绍一些 f-string 的高级用法:

  • 自记录表达式:从 Python3.8 版本开始,f-string 引入了自记录表达式,使得我们可以快速输出一些计算表达式。
import matha = 8print(f'{math.log(8) = }')# 输出:math.log(8) = 2.0794415416798357
  • 多行 f-string:通过最外层包裹小括号,我们可以非常灵活地撰写多行 f-string。
a = 1b = 2c = 3s = ( f'{a = }n' f'{b = }n' f'{c = }n')print(s)# 输出:a = 1b = 2c = 3
  • 控制浮点数精度:在 f-string 中我们可以灵活地控制浮点数的小数位数。
import mathpi = math.piprint(f'{pi:.3f}')print(f'{pi:.8f}')# 输出3.1423.14159265
  • 进制转换输出:在 f-string 中,我们可以直接在输出时将目标转换成不同的进制进行输出。
number_10 = 1024print(f'{number_10:b}') # 2进制print(f'{number_10:o}') # 8进制print(f'{number_10:x}') # 16进制小写print(f'{number_10:X}') # 16进制大写print(f'{number_10:c}') # ASCII编码# 输出:100000000002000400400?
  • 字符串对齐:f-string 默认为右对齐,我们可以修改对齐方式。
text = 'python'print(f'{text:>10}') # 右对齐print(f'{text:<10}') # 左对齐print(f'{text:^10}') # 居中对齐print(f'{text:*^10}') # 居中对齐,用*补齐空白n = 10print(f'{text:#^{n}}') # 参数嵌套,居中对齐,用~补齐空白# 输出: pythonpython pythonpython##python##
  • 标准化显示宽度:当我们需要对 f-string 打印内容的显示最小宽度进行限制时,譬如打印出类似表格的结构,可以这样写。
for x in range(1,11): print(f'{x:02}|{x2:3}/{x5:6}') # 输出:01| 1| 102| 4| 3203| 9| 24304| 16| 102405| 25| 312506| 36| 777607| 49| 1680708| 64| 3276809| 81| 5904910|100|100000
  • 格式化日期:针对日期类型的变量,我们可以参考下面的方式,直接在 f-string 中快速地进行格式化。
import datetimenow = datetime.datetime.now()print(f'{now:%Y年%m月%d号%H点%M分%S秒}') # 输出:2022年05月21号17点04分08秒
  • 科学计数:我们可以实现指定位数的科学计数法显示方式。
import mathpi = math.piprint(f'{pi*100:.10e}') # 输出3.1415926536e+02
  • 控制有效数字位数:我们还可以控制所显示数字的有效数字位数,即从左开始第一个不为0的数字往右一共显示的个数,当位数低于整数部分时会自动变成科学计数法格式。
a = 1312.3123123123123print(f'{a:.10g}')#输出:1312.312312 a = 1312.3123123123123print(f'{a:.3g}')#输出:1.31e+03