pythond的f-string的妙用

原来这段文章被安排在了Python 小技巧-杂,但是篇幅有亿点长,所以分出来


f-string 的妙用与 strobj.format()方法

format 方法是 f-string 的加强版,但是它们的功能并不是完全一样的,有些时候 f-string 更好用,有些时候 format 方法更好用

写完了这段感觉两者功能又完全一样了

关于 format 方法的基础知识可以去这里
下面例举一些 f-string 的奇妙之处

1. 引用变量

1
2
3
4
a=114514
b=1919810
print(f'{a}---{b}')
print(f'{b}---{a}')

1
2
114514---1919810
1919810---114514

2. 表达式求值&函数调用

1
2
3
4
5
6
def f(a, b):
return a+b


print(f'{114514+1919810}')
print(f'{f(3,2)}')

1
2
2034324
5

3. 加强版表达式求值&函数调用

1
2
3
4
5
6
def f(a, b):
return a+b


print(f'{114514+1919810=}')
print(f'{f(3,2)=}')

1
2
114514+1919810=2034324
f(3,2)=5

真的是太方便拉~再也不用担心麻麻不知道计算结果是由什么得来的拉~

4. 利用 lambda 表达式

1
2
3
print(f'{(lambda x: x ** 2)(2)}')
print(f'{(lambda x: x ** 2)(2): <7.2f}')
print(f'{(lambda x: x ** 2)(2)=}')

1
2
3
4
4.00
(lambda x: x ** 2)(2)=4

5. f-string 大括号内不能使用 \转义,但……

但是可以趁解释器不注意用~

1
2
newline = '\n'
print(f'newline: {newline}')

1
2
newline:

6. 格式化输出

格式化的表达法非常难记,但其实只需要清楚格式化表达的几个部分就能轻松记住。

项目
填充字符 可选值,可以是任意一个字符,只能是一个,默认是空格
对齐方式 可选值。”^”为变量居中;”<”为变量靠左;”>”为变量靠右。默认靠右。
总体宽度 可选值。整个”{}”体的宽度。
数字长度 可选值,前提是变量为对应格式。”.”后加数字,表示将这个数格式化为多少位数,可以大于数本身的位数,但不会有额外效果。还可以添加尾缀,具体见文档

7. 与 format 方法一样的格式化功能

小小偷个懒
一下表格引用自CSDN

格式类型相关格式描述符
基本格式类型

格式描述符 含义与作用 适用变量类型
s 普通字符串格式 字符串
b 二进制整数格式 整数
c 字符格式,按 unicode 编码将整数转换为对应字符 整数
d 十进制整数格式 整数
o 八进制整数格式 整数
x 十六进制整数格式(小写字母) 整数
X 十六进制整数格式(大写字母) 整数
e 科学计数格式,以 e 表示 ×10^ 浮点数、复数、整数(自动转换为浮点数)
E 与 e 等价,但以 E 表示 ×10^ 浮点数、复数、整数(自动转换为浮点数)
f 定点数格式,默认精度(precision)是 6 浮点数、复数、整数(自动转换为浮点数)
F 与 f 等价,但将 nan 和 inf 换成 NAN 和 INF 浮点数、复数、整数(自动转换为浮点数)
g 通用格式,小数用 f,大数用 e 浮点数、复数、整数(自动转换为浮点数)
G 与 G 等价,但小数用 F,大数用 E 浮点数、复数、整数(自动转换为浮点数)
% 百分比格式,数字自动乘上 100 后按 f 格式排版,并加 % 后缀 浮点数、整数(自动转换为浮点数)

常用的特殊格式类型:标准库 datetime 给定的用于排版时间信息的格式类型,适用于 date、datetime 和 time 对象

格式描述符 含义 显示样例
%a 星期几(缩写) ‘Sun’
%A 星期几(全名) ‘Sunday’
%w 星期几(数字,0 是周日,6 是周六) ‘0’
%u 星期几(数字,1 是周一,7 是周日) ‘7’
%d 日(数字,以 0 补足两位) ‘07’
%b 月(缩写) ‘Aug’
%B 月(全名) ‘August’
%m 月(数字,以 0 补足两位) ‘08’
%y 年(后两位数字,以 0 补足两位) ‘14’
%Y 年(完整数字,不补零) ‘2014’
%H 小时(24 小时制,以 0 补足两位) ‘23’
%I 小时(12 小时制,以 0 补足两位) ‘11’
%p 上午/下午 ‘PM’
%M 分钟(以 0 补足两位) ‘23’
%S 秒钟(以 0 补足两位) ‘56’
%f 微秒(以 0 补足六位) ‘553777’
%z UTC 偏移量(格式是 ±HHMM,未指定时区则返回空字符串) ‘+1030’
%Z 时区名(未指定时区则返回空字符串) ‘EST’
%j 一年中的第几天(以 0 补足三位) ‘195’
%U 一年中的第几周(以全年首个周日后的星期为第 0 周,以 0 补足两位) ‘27’
%w 一年中的第几周(以全年首个周一后的星期为第 0 周,以 0 补足两位) ‘28’
%V 一年中的第几周(以全年首个包含 1 月 4 日的星期为第 1 周,以 0 补足两位) ‘28’