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