Python 中 5 个更有用的 F 字符串技巧

这玩意看起来没有啥用,玩玩娱乐还可以,但是用起来了,发觉还是有用的

例子1

In [36]: big_number: int = 1_620_000_000

In [37]: print(f'{big_number:.2e}')
1.62e+09


在科学计数法中,e 表示“10 的幂”。例如,1.62e+09 表示 1.62 乘以 10 的 9 次方,即 1,620,000,000。

在 Python 中,.2e 格式说明符表示将数字格式化为科学计数法,其中小数点后保留 2 位数字。因此,f’{big_number:.2e}’ 将 big_number 格式化为 1.62e+09。

以下是科学计数法的一些其他示例:

6.62607015e-34 表示 6.62607015 乘以 10 的 -34 次方,即 0.000000000000000000000000000000662607015
2.99792458e+08 表示 2.99792458 乘以 10 的 8 次方,即 299,792,458
科学计数法通常用于表示非常大或非常小的数字。例如,光速为 2.99792458e+08 米/秒,而普朗克常数为 6.62607015e-34焦耳·秒。

希望这能回答您的问题。

例子2

In [38]: from datetime import datetime

In [39]: now: datetime = datetime.now()

In [40]: date_spec: str = '%d.%m.%y'

In [41]: print(f'{now:{date_spec}}')
02.04.24

In [42]: number: float = 1000000.1234567

In [43]: spec: str = ',.2f'

In [44]: print(f'{number:{spec}}')
1,000,000.12

定义数字格式说明符:

第六行 spec = ‘,.2f’ 定义了一个名为 spec 的变量,并赋值为一个字符串,该字符串指定了显示数字的格式。此格式说明符使用以下指令:
,: 添加千位分隔符 (例如,1,000,000)
.: 小数点
2: 指定数字应格式化为 2 位小数

例子3

In [45]: custom_folder: str = 'abc'

In [46]: path: str = fr'\Users\home\xxx\{custom_folder}'

In [47]: path
Out[47]: '\\Users\\home\\xxx\\abc'

例子4

In [54]: a: float = 0.1

In [55]: b: float = 0.2

In [56]: print(f'{a + b = :.1f}')
a + b = 0.3

In [57]: 

In [57]: print(f'{a + b = }')
a + b = 0.30000000000000004

In [58]: name: str = 'Bob'

In [59]: print(f'{name = !s}')
name = Bob


结果 0.30000000000000004 是由十进制数的浮点表示限制引起的。
对于大多数日常计算,差异可以忽略不计。
对于高精度任务,请探索替代库或定点算术。

在 f-string 中,!s 是一个格式说明符,用于格式化字符串。它指示 Python 将表达式格式化为字符串,并在必要时进行转义。

在您的示例中,表达式为 name,其值为 “Bob”。由于 !s 格式说明符,该值将按原样格式化为字符串,包括双引号。

以下是有关 !s 格式说明符的一些其他详细信息:

它等同于 str() 函数。
它将表达式转换为字符串,并在必要时进行转义。
它支持以下转义字符:
\n:换行符
\t:制表符
\:反斜杠
':单引号
":双引号

例子5

In [63]: from datetime import datetime,date

In [64]: banana: str = '🍌'

In [65]: name: str = 'Bob'

In [79]: print(f'[{today!s}] {name!s} says: {banana!s}')
[2024-04-02] Bob says: 🍌

In [80]: print(f'[{today!r}] {name!r} says: {banana!r}')
[datetime.date(2024, 4, 2)] 'Bob' says: '🍌'

In [81]: print(f'[{today!a}] {name!a} says: {banana!a}')
[datetime.date(2024, 4, 2)] 'Bob' says: '\U0001f34c'

在 f-strings 中,!s、!a 和 !r 是格式说明符,它们控制表达式插入到字符串中的方式。以下是它们各自的含义:
!s (str):

功能: 将表达式格式化为字符串。
!a (ascii):

功能: 将表达式格式化为 ASCII 字符串。
!r (repr):

功能: 使用表达式的 repr() 方法格式化表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少陽君

谢谢老板的拿铁

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值