f-string(格式化字符串字面量)是 Python 3.6 及以后版本引入的,用于嵌入表达式并格式化字符串。f-string 的语法简洁而强大,以下是 f-string 的一些常见语法和用法:
1. 基本语法
在字符串前加上 f 或 F,然后在字符串内部使用 {} 来嵌入变量或表达式。
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")
2. 表达式嵌入
可以在 {} 内嵌入 Python 表达式,f-string 会在运行时对表达式进行求值。
a = 5
b = 3
print(f"The sum of {a} and {b} is {a + b}.")
3. 格式化数字
通过冒号 : 在表达式后面进行格式化。例如,控制浮点数的小数位数、使用千分位分隔符等。
-
浮动点数格式:
:.2f:保留两位小数:.3e:使用科学记数法表示:,.2f:加上千分位分隔符
pi = 3.1415926535
print(f"Pi rounded to 2 decimal places: {pi:.2f}")
print(f"Pi in scientific notation: {pi:.3e}")
print(f"Number with commas: {1000000:,}")
4. 填充与对齐
使用 <, >, ^ 来控制文本的对齐,并使用特定字符进行填充。
- 左对齐:
< - 右对齐:
> - 居中对齐:
^
还可以指定填充字符,如 .、* 等。
text = "Hello"
print(f"{text:<10}") # 左对齐
print(f"{text:>10}") # 右对齐
print(f"{text:^10}") # 居中对齐
print(f"{text:.^10}") # 用 . 填充居中对齐
5. 日期和时间格式化
通过类似 strftime 的格式控制符,格式化日期和时间。
from datetime import datetime
now = datetime.now()
print(f"Current date and time: {now:%Y-%m-%d %H:%M:%S}")
6. 嵌套表达式
可以在 f-string 中嵌套另一个 f-string 或其他表达式。
x = 10
y = 20
print(f"The sum of {x} and {y} is {f'{x + y}'}")
7. 调用函数
可以直接在 f-string 中调用函数,函数的返回值将被插入字符串中。
def greet(name):
return f"Hello, {name}!"
name = "Bob"
print(f"{greet(name)}")
8. 条件表达式(Ternary Operator)
在 f-string 内部,可以使用条件表达式(也叫三元操作符)。
x = 5
print(f"The number is {'positive' if x > 0 else 'non-positive'}.")
9. 字典和对象属性访问
在 f-string 中直接访问字典中的值或对象的属性。
-
字典:
person = {"name": "Alice", "age": 30} print(f"Name: {person['name']}, Age: {person['age']}") -
对象:
class Person: def __init__(self, name, age): self.name = name self.age = age person = Person("Bob", 25) print(f"Name: {person.name}, Age: {person.age}")
10. 转义字符
在 f-string 中可以使用反斜杠 `` 来转义花括号 {}。
text = "This is a curly brace: {{}}"
print(f"{text}")
输出:
This is a curly brace: {}
11. 格式说明符
在冒号 : 后,可以使用格式说明符来指定如何显示数值、字符串、日期等。常见的格式说明符有:
-
整数:
:d:表示十进制整数。:x:表示十六进制整数。:b:表示二进制整数。
-
浮点数:
:f:表示浮点数。:.2f:保留两位小数。
-
百分比:
:.2%:表示百分比,并保留两位小数。
value = 0.4567
print(f"{value:.2%}") # 输出 45.67%
总结
f-string 是 Python 3.6+ 中非常强大的字符串格式化工具,其语法简单且高效,常用于:
- 插入变量和表达式;
- 格式化数字、日期和时间;
- 对齐和填充;
- 嵌套表达式和条件表达式;
- 调用函数、访问字典和对象属性。
f-string 的灵活性和高效性使其成为字符串格式化的首选方式。