logo

该视频仅会员有权观看

立即开通课程「Python 入门」权限。

¥
199
/ 年

f-strings(格式化字符串)是 Python 3.6 引入的一种格式化字符串的方式,使用 fF 前缀,将表达式直接嵌入字符串中,并自动进行格式化。f-strings 就像一个灵活的模板,你可以在模板中插入变量和表达式,生成最终结果。

f-strings 基本用法

f-strings 中,使用花括号 {} 包裹表达式,Python 会自动将表达式计算结果插入到字符串中,比如下面这个例子:

name = "Alice" age = 30 greeting = f"Hello, {name}! You are {age} years old." print(greeting) # 输出: Hello, Alice! You are 30 years old.

f 前缀告诉 Python 这是一个格式化字符串,{name}{age} 中的变量会被自动替换为其值。

f-strings 支持任意表达式,如计算、函数调用、列表索引等,如下所示:

import math radius = 5 area = f"The area of a circle with radius {radius} is {math.pi * radius ** 2:.2f}" print(area) # 输出: The area of a circle with radius 5 is 78.54

上面代码中我们在 f-strings 中嵌入计算表达式,并使用 :.2f 指定保留两位小数。

注意我们在 {} 中指定了 :,这个是用来进行格式化控制的,: 后面跟着格式化规范,比如保留小数位数、日期格式化、货币格式化等,

price = 1234.5678 formatted = f"${price:,.2f}" print(formatted) # 输出: $1,234.57

这里我们使用 :, 插入千位分隔符,使用 .2f 保留两位小数,生成格式化的货币表示。

对于字符串我们还可以使用 str.format()% 操作符进行格式化,但是相比之下 f-strings 更加简洁和直观,代码可读性更高,如下所示:

name = "Alice" age = 30 greeting = "Hello, {}! You are {} years old.".format(name, age) # {} 为占位符 print(greeting) # 输出: Hello, Alice! You are 30 years old.

上面代码中我们通过 str.format() 方法格式化字符串,将变量传递给占位符 {},生成最终结果。除了使用 {} 占位符外,我们还可以使用 % 操作符进行格式化,如下所示:

name = "Alice" age = 30 greeting = "Hello, %s! You are %d years old." % (name, age) print(greeting) # 输出: Hello, Alice! You are 30 years old.

无论是使用 str.format() 方法还是 % 操作符,都需要传递参数给占位符,相对而言 f-strings 更加简洁和直观,是 Python 中推荐的字符串格式化方式。

name = "Alice" age = 30 greeting = f"Hello, {name}! You are {age} years old." print(greeting) # 输出: Hello, Alice! You are 30 years old.

我们只需要在 f-strings 中直接将变量和表达式嵌入字符串中,避免了格式化方法中的参数传递和占位符,代码更加简洁和易读。

此外我们还可以使用 f-strings 格式化多行字符串,如下所示:

name = "Alice" age = 30 message = f""" Name: {name} Age: {age} """ print(message)

上面代码中我们使用三引号(""")创建多行 f-strings,便于输出多行内容。

在使用 f-strings 时我们应该尽量保持简单明了,避免复杂的嵌套表达式。还需要注意避免在 f-strings 中直接插入用户输入,防止安全漏洞。

# 安全处理用户输入 user_input = "<script>alert('XSS');</script>" safe_message = f"User input: {user_input!r}" # 使用 `!r` 转义特殊字符 print(safe_message)

使用 !r 转义特殊字符,避免直接插入用户输入引发的安全问题。

f-strings 常用场景

f-strings 在日志记录、生成动态 SQL 查询、处理文件路径等场景中有广泛应用。

日志记录

import datetime username = "user123" timestamp = datetime.datetime.now() log_message = f"[{timestamp:%Y-%m-%d %H:%M:%S}] User '{username}' logged in." print(log_message)

上面代码中使用 f-strings 格式化日志消息,包括时间戳和用户名。

生成动态 SQL 查询

table = "users" column = "age" value = 30 query = f"SELECT * FROM {table} WHERE {column} > {value}" print(query)

使用 f-strings 动态生成 SQL 查询,插入表名、列名和条件值。

文件路径处理

filename = "data" extension = "txt" filepath = f"/path/to/{filename}.{extension}" print(filepath)

使用 f-strings 拼接文件路径,生成完整的文件名和路径。

f-strings 是 Python 中一种简洁、直观的字符串格式化方式,可以帮助我们快速生成格式化的字符串,提高代码的可读性和可维护性,希望大家能够通过这些例子,更好的理解 f-strings 的概念和用法。