1、引言
f-string,想必很多python的码农都很熟悉… 小屌丝:鱼哥,如果我没记错,这是python3.6版本以后引入的 小鱼:对的,没错,你的头发虽然不多,但是你的记忆力却没减~ ~ 小屌丝:你是夺笋!!! 专攻人家软肋… 小鱼:我这都是嘴下留情了…不然你那点事,我都给抖出来!!
小屌丝:… 为了不让我们友谊的小船倾斜,能不能share点硬货?? 小鱼:多硬? 螺丝钉硬还是砖头硬?? 小屌丝:鱼哥,我发现你是真狗啊…如果不是为了小妹,我就不回答你的问题了… 小鱼:难怪难怪… 好吧,为了能让你的小迷妹对你更加认可,我今天就分享一点99%的撸码人不知道的f-string隐藏技巧; 小屌丝:唉我去~~ 鱼哥,我发现你对我是真爱!!! 小鱼:有多远走多远, 别扯没用的,我们开始今天的分享。
2、f-string
2.1 基础用法介绍
基础用法很简单,一句话:
- 前缀f的字符串中向{}内直接填入要嵌入的值、变量或计算表达式。
举例:
实例一
f'1 + 1 = {2}'
结果
'1 + 1 = 2'
实例二
a = 1 + 1
f'1 + 1 = {a}'
结果
'1 + 1 = 2'
实例三
f'1 + 1 = {1 + 1}'
结果
'1 + 1 = 2'
2.2 控制浮点数精度
我们可以按照以下方式灵活的控制浮点数的小数位数: 举例
import math
pi = math.pi
print(f'输出π:{pi}')
print(f'输出π小数点后2位:{pi:.2f}')
print(f'输出π小数点后9位:{pi:.9f}')
输出π:3.141592653589793
输出π小数点后2位:3.142
输出π小数点后9位:3.141592654
2.3 设置科学计算法格式
也是很简单,直接上例子,我们来瞅瞅:
import math
pi = math.pi
print(f'输出πx100后科学计算法显示:{pi*100:.10e}')
结果
输出πx100后科学计算法显示:3.1415926536e+02
2.4 自记录表达式
从python3.8开始,f-string就引入了自记录表达式, 好处:快速的输出计算表达式。 举例:
import math
a = 8
print(f'math.log(a) = {math.log(a)}')
结果
math.log(a) = 2.0794415416798357
2.5 多行 f-string
f-string不仅仅只能编写单行代码,多行的也一样可行。
举例
a = 1
b = 2
c = 3
result = (f'a = {a } \n'
f'b = {b} \n'
f'c = {c} \n'
)
print(f'result输出结果是:\n{result}')
结果
result输出结果是:
a = 1
b = 2
c = 3
2.6 在f-string格式化日期
针对日期类型的变量,同样可以在f-string中快速的进行格式化。
举例
import datetime
now = datetime.datetime.now()
print(f'当前输出日期时间是:{now:%Y-%m-%d %H:%M:%S}'))
结果:
当前输出日期时间是:2021-08-02 12:24:36
2.7 控制有效数字位数
在实际项目中,我们只想显示有效的数字位数,那怎么做呢,我们来看下: 实例一
a = 123.4567890123456
print(f'从左往右剔除第一个为0的12个数字 :{a:.12g}')
结果
从左往右刨除第一个为0的10个数字 :123.456789012
实例二
- 同样显示10个数字,当位数小于整数部分时,自动变成科学计数法
a = 12345678.90123456
print(f'从左往右刨除第一个为0的5个数字 :{a:.5g}')
结果
从左往右刨除第一个为0的5个数字 :1.2346e+07
2.8 修改为左对齐
f-string默认为右对齐,但是有的大佬就不走寻常路(有可能喜欢喝勇闯天涯),必须要左对齐,那也是可以实现的。
使用来"<"修改显示模式为左对齐。
for j in range(1,11):
print(f'{j:<2}|{j**3:<4}|{j**6:<7}')
print(f'{j:2}|{j**3:4}|{j**6:7}')
结果 ①左对齐
1 |1 |1
2 |8 |64
3 |27 |729
4 |64 |4096
5 |125 |15625
6 |216 |46656
7 |343 |117649
8 |512 |262144
9 |729 |531441
10|1000|1000000
②右对齐
1| 1| 1
2| 8| 32
3| 27| 243
4| 64| 1024
5| 125| 3125
6| 216| 7776
7| 343| 16807
8| 512| 32768
9| 729| 59049
10|1000|100000
2.9 标准化显示宽度
上面的实例,满足了左对齐,右对齐,显示数字截取,那么 我们能不能对输出的结果中显示的宽度做调整呢? 当然也是可以的。 同样用上面的左对齐的例子,
for j in range(1,11):
print(f'{j:02}|{j**3:4}|{j**5:6}')
print(f'{j:02}|{j**3:0004}|{j**5:00006}')
结果 第一列占用2个字符
01| 1| 1
02| 8| 32
03| 27| 243
04| 64| 1024
05| 125| 3125
06| 216| 7776
07| 343| 16807
08| 512| 32768
09| 729| 59049
10|1000|100000
第一列占用2个,第二列4个,第三列6个
01|0001|000001
02|0008|000032
03|0027|000243
04|0064|001024
05|0125|003125
06|0216|007776
07|0343|016807
08|0512|032768
09|0729|059049
10|1000|100000
3、总结
看到这里,今天的分享内容,似乎又到一段落了。 总的来说,这些隐藏的技巧,只是大家平时没有太多的关注, 其实只要稍稍的多花费一点点时间,可能小鱼也不能说99%的人不知道呢。
小屌丝:看到这里,我又可以跟我的小学妹嘚瑟一番了。 小鱼:哎~~ 你嘚瑟你的,我吃我的饭去了。
|