原来这段文章被安排在了Python 小技巧-杂,但是篇幅有亿点长,所以分出来
f-string 的妙用与 strobj.format()方法
format 方法是 f-string 的加强版,但是它们的功能并不是完全一样的,有些时候 f-string 更好用,有些时候 format 方法更好用
写完了这段感觉两者功能又完全一样了
关于 format 方法的基础知识可以去这里看
下面例举一些 f-string 的奇妙之处
1. 引用变量
1  | a=114514  | 
得
1  | 114514---1919810  | 
2. 表达式求值&函数调用
1  | def f(a, b):  | 
得
1  | 2034324  | 
3. 加强版表达式求值&函数调用
1  | def f(a, b):  | 
得
1  | 114514+1919810=2034324  | 
真的是太方便拉~再也不用担心麻麻不知道计算结果是由什么得来的拉~
4. 利用 lambda 表达式
1  | print(f'{(lambda x: x ** 2)(2)}')  | 
得
1  | 4  | 
5. f-string 大括号内不能使用 \转义,但……
但是可以趁解释器不注意用~
1  | newline = '\n'  | 
得
1  | newline:  | 
6. 格式化输出
格式化的表达法非常难记,但其实只需要清楚格式化表达的几个部分就能轻松记住。
| 项目 | 值 | 
|---|---|
| 填充字符 | 可选值,可以是任意一个字符,只能是一个,默认是空格 | 
| 对齐方式 | 可选值。”^”为变量居中;”<”为变量靠左;”>”为变量靠右。默认靠右。 | 
| 总体宽度 | 可选值。整个”{}”体的宽度。 | 
| 数字长度 | 可选值,前提是变量为对应格式。”.”后加数字,表示将这个数格式化为多少位数,可以大于数本身的位数,但不会有额外效果。还可以添加尾缀,具体见文档。 | 
再补充一个超级融合版本,用来展示各个部分的顺序
1  | B=12832454  | 
得
1  | B = ###12,832,454.00####  | 
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’ |