软件测试|f-string格式化输出的这些用法,90%的Pythoner不知道

简介: 软件测试|f-string格式化输出的这些用法,90%的Pythoner不知道

f-srting

f-string 是 Python3.6 版本开始引入的特性,想必很多 Python 用户都基础性的使用过,通过它我们可以更加方便地向字符串中嵌入自定义内容,但 f-string 真正蕴含的功能远比大多数用户知道的要丰富,今天我们就来一起探索它们!

基础用法

f-string 最基础的用法很简单,如下例所示,在前缀f的字符串中向{}内直接填入要嵌入的值、变量或计算表达式:

print(f'1+1 = {2}')
# 输出:1+1 = 2
 
a = 1 + 1
print(f'1+1 = {a}')
# 输出:1+1 = 2
 
print(f'1+1 = {1+1}')
# 输出:1+1 = 2

name = 'kunkun'
grade = '两年半'
song = '鸡你太美'

print(f'我是{name},练习时长{grade},我的作品是{song}')

# 输出 我是kunkun,练习时长两年半,我的作品是鸡你太美

自记录表达式

从 Python3.8 版本开始,f-string 引入了自记录表达式,使得我们可以按照下面的写法快速输出一些计算表达式:

import math
a = 8
print(f'{math.log(a) = }')

# 输出:math.log(a) = 2.0794415416798357

注:Python3.8以下不支持f-string中加入等号

多行格式化输出

通过最外层包裹小括号,我们可以像下面这样非常灵活地撰写多行 f-string:

a = 1
b = 2
c = 3
s = (
    f'{a = }\n'
    f'{b = }\n'
    f'{c = }\n'
)
print(s)

# 输出:
a = 1
b = 2
c = 3

控制浮点数精度

在 f-string 中我们可以按照下列方式灵活地控制浮点数的小数位数:
比如指定圆周率的位数

import math
pi = math.pi
print(f'{pi:.3f}')
print(f'{pi:.8f}')

# 输出
3.142
3.14159265

进制转换输出

在 f-string 中,我们可以直接在输出时将目标转换成不同的进制进行输出:

number_10 = 1024
print(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编码

# 输出:
10000000000
2000
400
400
Ѐ

字符串对齐

f-string 默认为右对齐,我们可以修改对齐方式:

text = 'python'
print(f'{text:>10}')  # 右对齐
print(f'{text:<10}')  # 左对齐
print(f'{text:^10}')  # 居中对齐
print(f'{text:*^10}')  # 居中对齐,用*补齐空白
n = 10
print(f'{text:#^{n}}')  # 参数嵌套,居中对齐,用~补齐空白

# 输出:
    python
python
  python
**python**
##python##

格式化日期

针对日期类型的变量,我们可以参考下面的方式,直接在 f-string 中快速地进行格式化:

import datetime
now = datetime.datetime.now()
print(f'{now:%Y年%m月%d号%H点%M分%S秒}')
 
# 输出:
2022年05月21号17点04分08秒

科学计数

我们可以实现指定位数的科学计数法显示方式:
比如显示圆周率

import math
pi = math.pi
print(f'{pi*100:.10e}')
 
# 输出
3.1415926536e+02

控制有效数字位数

我们还可以控制所显示数字的有效数字位数,即从左开始第一个不为0的数字往右一共显示的个数,当位数低于整数部分时会自动变成科学计数法格式:

a = 1312.3123123123123
print(f'{a:.10g}')
#输出:1312.312312
 
a = 1312.3123123123123
print(f'{a:.3g}')
#输出:1.31e+03

总结

关于在 Python 中 f-string 格式化输出的几个技巧的文章就介绍到这里,这些骚操作你学会了吗?还有哪些狂拽炫酷吊炸天的代码,欢迎留言区讨论!

相关文章
|
19天前
|
编译器 容器
C++string类的介绍及常用函数用法总结
C++string类的介绍及常用函数用法总结
34 1
|
19天前
|
数据可视化 测试技术
思维导图在软件测试领域的用法
思维导图在软件测试领域的用法
|
8月前
|
SQL 存储 关系型数据库
软件测试|SQL JOIN的用法,你会了吗?
软件测试|SQL JOIN的用法,你会了吗?
48 0
|
8月前
|
安全 网络协议 Shell
渗透测试工具用法技巧入门到进阶
零基础网盘 百度网盘-19****394的分享 新手入门过程 看完 后面有进阶过程 简单工具
181 0
|
8月前
|
算法 Java 数据库
抽象类和接口 && String的理解 && StringBuilder和StringBuffer && 异常的基本用法 && 时间复杂度
抽象类和接口 && String的理解 && StringBuilder和StringBuffer && 异常的基本用法 && 时间复杂度
46 0
|
19天前
|
Web App开发 前端开发 测试技术
Web应用程序测试工具Selenium用法详解
Web应用程序测试工具Selenium用法详解
44 0
|
19天前
|
存储 算法 安全
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
|
8月前
|
Java
【Java用法】Java中String类型和int类型互转的所有方法
【Java用法】Java中String类型和int类型互转的所有方法
81 0
|
19天前
|
测试技术
软件测试/测试开发全日制|Pytest中yield的用法详解
软件测试/测试开发全日制|Pytest中yield的用法详解
29 0
|
19天前
|
编译器 C++
C++之STL库:string类(用法列举和总结)
C++之STL库:string类(用法列举和总结)