f-string

533 阅读3分钟

f-string(格式化字符串字面量)是 Python 3.6 及以后版本引入的,用于嵌入表达式并格式化字符串。f-string 的语法简洁而强大,以下是 f-string 的一些常见语法和用法:

1. 基本语法

在字符串前加上 fF,然后在字符串内部使用 {} 来嵌入变量或表达式。

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+ 中非常强大的字符串格式化工具,其语法简单且高效,常用于:

  1. 插入变量和表达式
  2. 格式化数字、日期和时间
  3. 对齐和填充
  4. 嵌套表达式和条件表达式
  5. 调用函数、访问字典和对象属性

f-string 的灵活性和高效性使其成为字符串格式化的首选方式。