Skip to content

Python 超好用的几种 f-string 方式,你都会吗 ?

f-string 是 Python 3.6 版本引入的一种字符串格式化方法,它允许我们将变量、表达式直接插入到字符串中。本文将介绍 f-string 的大部分使用方式,快来检查一下你是否全部都掌握了。

基本用法

f-string 是 Python 中用于字符串格式化的语法,在字符串前加上字母 f 然后使用花括号 {} 在字符串内容插入的变量、表达式。在运行时,这些花括号内的内容将被替换为对应的值。

插入变量

可以直接将变量名放在花括号中,f-string 会自动将其替换为变量的值。

python
>>> name = "正心全栈编程"
>>> f'{name} 是在 bilibili 发布视频'
'正心全栈编程 是在 bilibili 发布视频'

插入表达式

除了变量,还可以在花括号插入表达式,f-string 会将表达式的结果插入到字符串中。

python
>>> name = "正心全栈编程"
>>> age = 18
>>> f'{name} 今年 {age} 岁了,再过 2 年他就 { age + 2} 了'
'正心全栈编程 今年 18 岁了,再过 2 年他就 20 了'

插入函数

可以在 f-string 中调用函数,并将函数的返回值插入到字符串中。

python
>>> name = "正心全栈编程"
>>> age = 18
>>> import datetime
>>> def birth_year(age):
...     return datetime.datetime.now().year - age
...
>>> f'{name} 出生于 { birth_year(age) }'
'正心全栈编程 出生于 2005'

使用对象

f-string 也可以直接使用列表、字典与对象,但是需要注意单双引号。

python
>>> name = "正心"
>>> fruits = ["苹果", "香蕉", "橘子"]
>>> f"正心最喜欢的水果是 {fruits[-1]}。"
'正心最喜欢的水果是:橘子。'
python
>>> zx = {"name": "正心", "age": 18}
>>> f'{zx["name"]} 今年 {zx["age"]} 岁了'
'正心 今年 18 岁了'
python
>>> class Person:
...     def __init__(self, name, age):
...         self.name = name
...         self.age = age
...     def introduce(self):
...         return f"我的名字叫 {self.name} ,我今年已经 {self.age} 岁了。"
...
>>> person = Person("正心", 18)
>>> person.introduce()
'我的名字叫 正心 ,我今年已经 18 岁了。'

格式化语法

f-string 支持使用冒号(:)来指定格式化选项,例如保留小数位、填充字符、对齐方式、科学计数等。

保留小数位

python
>>> from math import pi
>>> pi
3.141592653589793
>>> f'pi 为 {pi:.2f}'
'pi 为 3.14'
>>> f'pi 为 {pi:.3f}'
'pi 为 3.142'
>>> f'pi 为 {pi:10.3f}' 
'pi 为      3.142'

占位、对齐与填充

python
>>> pi = 3.14
>>> f'pi 为 {pi:>5}'
'pi 为  3.14'
>>> f'pi 为 {pi:>10}'
'pi 为       3.14'
>>> f'pi 为 {pi:<10}'
'pi 为 3.14      '
>>> f'pi 为 {pi:^10}'
'pi 为    3.14   '
>>> f'pi 为 {pi:0^10}'
'pi 为 0003.14000'
>>> f'pi 为 {pi:$^10}'
'pi 为 $$$3.14$$$'

特殊计数

会计计数

python
>>> salary = 15000
>>> print(f'你的月薪为 {salary:_}')
你的月薪为 15_000
>>> print(f'你的月薪为 {salary:,}')
你的月薪为 15,000
>>> print(f'你的月薪为 {salary:10,}')
你的月薪为     15,000
>>> print(f'你的月薪为 {salary:10,.2f}')
你的月薪为  15,000.00
>>> print(f'你的月薪为 {salary:0>10,.2f}') 
你的月薪为 015,000.00

科学计数

python
>>> salary = 15000
>>> print(f'你的月薪为 {salary:e}') 
你的月薪为 1.500000e+04
>>> print(f'你的月薪为 {salary:5.2e}') 
你的月薪为 1.50e+04